2011-12-01 63 views
0

我正在嘗試在android應用的活動中使用onClick()函數。到目前爲止,我有:Android應用和java活動,onCreate()方法和XML問題

public class Activity2 extends Activity implements OnClickListener { 

    private ImageButton closeButton; 

    @Override 
    public void onCreate(Bundle savedInstanceState){ 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity2); 

     Button myButton = (Button) findViewById(R.id.wowButton); 
     myButton.setOnClickListener(this); 


     this.closeButton = (ImageButton)this.findViewById(R.id.close); 
     this.closeButton.setOnClickListener(new OnClickListener(){ 
      public void onClick(View v){ 
       finish(); 
      } 
     }); 
    } 

    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     TextView lowerText = (TextView) findViewById(R.id.textView2); 
     EditText boxText = (EditText) findViewById(R.id.editText1); 
     lowerText.setText(boxText.getText());  
    } 

} 

這只是我的項目的精簡版。當我像平常一樣進入我的應用程序時,一切正常。當我點擊按鈕打開這個特定的活動時,一切都崩潰了。我認爲問題在於onClick()方法。此代碼是由我的項目合作伙伴發送給我的,沒有XML文件,所以我認爲那是問題所在。

在這裏,我認爲應該工作我基本的XML文件:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" android:layout_height="match_parent" 
    android:orientation="vertical"> 

    <Button android:id="@+id/wowButton" android:layout_width="fill_parent" 
     android:layout_height="200dp" android:text="WoW" android:typeface="sans" 
     android:background="@drawable/btn_default_normal_red" /> 

    <EditText 
     android:id="@+id/editText1" 
     /> 

    <TextView 
     android:id="@+id/textView2" 
     /> 

</LinearLayout> 

雖然很基本的,我雖然它應該工作。謝謝你的幫助。

+0

你能顯示堆棧跟蹤與例外嗎? – SeanPONeil

+0

java.lang.RuntimeException:無法啓動活動ComponentInfo {com.app.devtracker/com.app.devtracker.Activity2}:java.lang.NullPointerException ...正如我最初所想的那樣,這導致了「@onClick」。 – Nibirue

+0

嘗試在onClick方法中設置斷點並檢查是否出錯 –

回答

3

您通過this.closeButton = (ImageButton)this.findViewById(R.id.close); 實例化了一個ImageButton但是您不要在xml文件中聲明它。這就是爲什麼它是空的並引發NullPointer異常。

+0

在findViewById調用中沒有發生實例化,findViewById只搜索已存在於層次結構中的視圖。當視圖沒有找到時它會返回'null',這確實會在下一行產生NullPointerException。 – adamp

+0

賓果。檢查你的XML – SeanPONeil

+0

對不起,浪費你的時間......我的活動對我的項目來說是新的,我想要在每個新活動中關閉按鈕,但是我忘了在XML中也這樣做。 – Nibirue