2011-11-04 64 views
0

我正在嘗試學習Android,並且正在做一個涉及兩個按鈕和一個textview的簡單練習。但是,當我嘗試在emaulator中運行應用程序時,該應用程序被強制關閉。在AVD上測試時應用程序關機

下面是代碼:

public class CambiarColorActivity extends Activity 
implements View.OnClickListener { 
    Button btnRed; 
    Button btnBlue; 
    TextView text; 

    @Override 
    public void onCreate(Bundle icicle) { 
     super.onCreate(icicle); 

     setContentView(R.layout.main); 
     TextView text = (TextView)findViewById(R.id.textView1); 
     btnRed=(Button)findViewById(R.id.button1); 
     btnBlue=(Button)findViewById(R.id.button2);     
     btnRed.setOnClickListener(this); 
     btnBlue.setOnClickListener(this);     
    } 

    public void onClick(View view) { 
     changeColor(); 
    } 

    private void changeColor() { 
     if(btnRed.isPressed()) { 
      text.setBackgroundResource(Color.RED); 
     } else { 
      text.setBackgroundResource(Color.BLUE);      
     } 
    } 
} 

而這些都是我在日誌中發現Eclipse中的錯誤:

11-04 11:34:42.377: E/AndroidRuntime(376): Caused by: java.lang.NullPointerException 
11-04 11:34:42.377: E/AndroidRuntime(376): at mi.entrenamiento.OrejanoX.CambiarColorActivity.onCreate(CambiarColorActivity.java:25) 

這裏是我的我的main.xml中的一部分

<LinearLayout 
    android:id="@+id/linearLayout1" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" > 

    <Button 
     android:id="@+id/button1" 
     style="@style/red" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:drawableLeft="@drawable/red" 
     android:text="@string/red" /> 

    <Button 
     android:id="@+id/button2" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:drawableLeft="@drawable/blue" 
     android:text="@string/azul" /> 

</LinearLayout> 

任何幫助將受到歡迎。

感謝和問候,毛羅。

回答

1

它說你會得到NullPointerException。我想這是因爲btnRedbtnBlue爲空。檢查並看看您是否從findViewById獲得有效值。

+0

我已將main.xml添加到原始帖子。我確實得到了一個空值,但我可以確定原因。 – Orejano

+0

這有幾個原因發生;谷歌「findViewById返回null」,我相信你會發現一些。 – Jong

2

因爲錯誤是

11月11日至4日:34:42.377:E/AndroidRuntime(376):顯示java.lang.NullPointerException 11月11日至4日:34:42.377:致E/AndroidRuntime(376):在mi.entrenamiento.OrejanoX.CambiarColorActivity.onCreate(CambiarColorActivity.java:25)

所以請看看有什麼是你的文件的第25行。

我想這是以下幾行之一。

btnRed.setOnClickListener(this); 
btnBlue.setOnClickListener(this); 

所以請檢查您的main.xml是否爲兩個按鈕設置android:id。

+0

我有teo按鈕的andoird:id。檢查原始帖子以獲取新信息。 – Orejano

+1

因爲在'onCreate()'你寫'TextView text =(TextView)findViewById(R.id.textView1);',所以你在'changeColor()'中得到錯誤,所以文本是'onCreate ()',而不是實例變量。另請注意,'setBackgroundResource()'將參數作爲資源ID,所以它會在這裏出錯。你應該寫'text.setBackgroundColor(Color.RED)' – umbalaconmeogia

0

我發現這是該行上的main.xml

style="@style/red" 

我刪除了錯誤,一切都很好。

相關問題