2012-07-27 76 views
0

我在另一種方法中有onClick()方法,並且在調用gewinnGruen()方法時崩潰。onClick(View v)crash?

請幫助我知道爲什麼:

public void gewinnGruen() { 
    Dialog dialog = new Dialog(this, android.R.style.Theme_Translucent_NoTitleBar_Fullscreen); 
    dialog.setContentView(R.layout.winnergreen); 
    dialog.show(); 
    newgame1 = (Button) findViewById(R.id.newgame1); 
    newgame1.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 
      field1.setBackgroundResource(R.drawable.field0); 
      place1 = 0; 
     } 
    }); 
} 

沒有onClick()方法它不崩潰,一切正常。

+0

POST錯誤消息和異常堆棧跟蹤 – hovanessyan 2012-07-27 09:51:18

+1

郵政** ** logcat中 – shkschneider 2012-07-27 09:51:26

+0

致命異常替換代碼.GameActivity.gewinnGruen(GameActivity.java:297) at de.stupe.tictactoereloaded.GameActivity.pruefeGewinnGruen(GameActivity.java:220) at de.stupe.tictactoereloaded.GameActivity $ 1.onClick(GameActivity.java:51) at安卓.view.View.performClick(View.java:2538) at android.view.View $ PerformClick.run(View.java:9152) at android.os.Handler.handleCallback(Handler.java:587) at android .os.Handler.dispatchMessage(Handler.java:92) at android.os.Looper.loop(Looper.java:130) – Stupe 2012-07-27 09:57:02

回答

2

更改此

newgame1 = (Button) findViewById(R.id.newgame1); 

newgame1 = (Button)dialog. findViewById(R.id.newgame1); 

你打的NullPointerException在這條線上。

而這是因爲,您正試圖在您創建的對話框中初始化一個按鈕,但是您沒有在此處爲該方法提供對話框對象。所以它看着Activity的視圖並返回null,因爲它在那裏找不到那個id的任何東西。主要 顯示java.lang.NullPointerException 在de.stupe.tictactoereloaded:

+0

Ty。幫助我很多 – Stupe 2012-07-27 10:03:07

2
newgame1 = (Button)dialog.findViewById(R.id.newgame1); 
        ^^^^^^ 
1

public void gewinnGruen() { 

     Dialog dialog = new Dialog(this, android.R.style.Theme_Translucent_NoTitleBar_Fullscreen); 
     dialog.setContentView(R.layout.winnergreen); 
     dialog.show(); 
     newgame1 = (Button) dialog.findViewById(R.id.newgame1); 
     newgame1.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View v) { 
       field1.setBackgroundResource(R.drawable.field0); 
       place1 = 0; 
      } 
     }); 
    }