2014-06-10 58 views
-3

我知道有幾個類似的問題,但我嘗試了不同的建議,如清理和重建,但仍然沒有爲我工作。我是剛接觸android並在Eclipse上工作的。我試圖做一個簡單的測試應用程序,用戶點擊一個圖像按鈕(一個球),並有一個文本視圖,當點擊按鈕時改變文本。爲什麼我的android應用程序沒有運行(不幸的是應用程序已停止)

由於我是新到Android,我注意到有一個片段的main.xml和main.xml中,如果有,就是要2.

有誰知道爲什麼會這樣,我想知道沒有在模擬器或設備上運行?謝謝你的幫助。

主 -

<item 
    android:id="@+id/action_settings" 
    android:orderInCategory="100" 
    android:showAsAction="never" 
    android:title="@string/action_settings"/> 

    </menu> 

片段主 -

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="com.example.imagebutton.MainActivity$PlaceholderFragment" > 

    <ImageButton 
    android:id="@+id/ball" 
    android:layout_width="100dip" 
    android:layout_height="100dip" 
    android:scaleType="fitXY" 
    android:src="@drawable/ball" 
    /> 

    <TextView 
    android:id="@+id/tv" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignBottom="@+id/ball" 
    android:layout_marginBottom="36dp" 
    android:layout_marginLeft="48dp" 
    android:layout_toRightOf="@+id/ball" 
    android:text="@string/click" /> 

    </RelativeLayout> 

主要活動 - 包com.example.imagebutton;

import android.app.Activity; 
    import android.app.ActionBar; 
    import android.app.Fragment; 
    import android.os.Bundle; 
    import android.view.LayoutInflater; 
    import android.view.Menu; 
    import android.view.MenuItem; 
    import android.view.View; 
    import android.view.ViewGroup; 
    import android.widget.Button; 
    import android.widget.ImageButton; 
    import android.widget.TextView; 
    import android.os.Build; 

public class MainActivity extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    ImageButton ballButton = (ImageButton) findViewById(R.id.ball); 

    ballButton.setOnClickListener(new View.OnClickListener(){ 

     @Override 

     public void onClick (View v){ 

     TextView text = (TextView) findViewById(R.id.tv); 

     text.setText("It has been clicked!"); 
     } 



     }); 
    } 
} 

清單 -

<uses-sdk 
    android:minSdkVersion="14" 
    android:targetSdkVersion="19" /> 

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name="com.example.imagebutton.MainActivity" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 

    </manifest> 
+0

你得到的錯誤是什麼?該應用程序無法運行或崩潰? – user1406716

+0

視圖屬於片段xml。切換到'setContentView(R.layout.fragment_main);'進行測試。但你被鼓勵使用片段 – Raghunandan

+0

作爲片段檢查這個http://stackoverflow.com/questions/23653778/nullpointerexception-accessing-views-in-oncreate – Raghunandan

回答

0

這是因爲findViewById()activity_main佈局搜索,而按鈕位於片段中的佈局fragment_main

移動,在片段的onCreateView()方法的代碼:

//... 
View rootView = inflater.inflate(R.layout.fragment_main, container, false); 
ImageButton ballButton = (ImageButton) findViewById(R.id.ball); 
ballButton.setOnClickListener(new View.OnClickListener(){  
     @Override  
     public void onClick (View v){  
     TextView text = (TextView) findViewById(R.id.tv);  
     text.setText("It has been clicked!"); 
     }    
}); 
//... 

注意,現在你訪問它通過rootView view

ImageButton ballButton = (ImageButton)rootView.findViewById(R.id.ball); 

否則你會得到再次NullPointerException

相關問題