2012-03-02 6 views
0

Androidアプリケーションをコーディングしていて、突然エラーが発生しました。エラーログにJava.Lang.Null.pointer.exceptionがあります.javaまだそれに関するコードは変更されていません。ここにコードです:任意のアイデア?AndroidでJava Lang Nullポインタ例外を取得する

メインクラス

public void onClick(View v) { 
    switch (v.getId()) {   
    case R.id.about_button: 
     Intent i = new Intent(this, About.class); 
     startActivity(i); 
     break; 
    case R.id.ext_button: 
     finish(); 
     break; 

    case R.id.new_button: 

     openNewGameDialog(); 
     break; 
    } 
} 

private void openNewGameDialog() { 

    new AlertDialog.Builder(this) 

    .setTitle(R.string.diff_head) 

    .setItems(R.array.difficulty, 

    new DialogInterface.OnClickListener() { 

     public void onClick(DialogInterface dialoginterface, 
       int i) { 

      startGame(i); 

     } 
    }) 

    .show(); 
} 


private void startGame(int i) { 

    Intent intent = new Intent(this, Game.class); 

    intent.putExtra(Game.KEY_DIFFICULTY, i); 

    startActivity(intent); 
} 

Game.java

public class Game extends Activity { 

public static final String KEY_DIFFICULTY = "w1279057.CW1.difficulty"; 
public static final int DIFFICULTY_NOVICE = 0; 
public static final int DIFFICULTY_EASY = 1; 
public static final int DIFFICULTY_MEDIUM = 2; 
public static final int DIFFICULTY_GURU = 3; 




      Random rand = new Random(); 


line 23 >> int diff = getIntent().getIntExtra(KEY_DIFFICULTY, DIFFICULTY_NOVICE); 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
+0

あなたもスタックトレースを投稿することができますでの状態の外観を保存したい場合は?。 –

+2

'getIntent()'はヌル値を返す必要があります。ヌル値で 'getIntExtra(..)'を呼び出すと例外が発生します。 –

+2

getIntentは、onCreateが最初に呼び出されなかったためにnullを返します。この行をonCreateに移動します。edit:after super.onCreate – Selvin

答えて

0

それはそれが起こっているラインなら、それはgetIntent()から返される値がnullであることを意味します。このため、メソッド呼び出しの戻り値に対してメソッドを呼び出さないようにする必要があります(Law of Demeter参照)。

このアクティビティの開始方法をもう一度確認してください。問題はそこにある可能性があります。

0

あなたがコードをアップロードするのに十分ではありませんでした..しかし、私が推測しなければならないのは.. getIntent()は、startGame()メソッドから呼び出された場合にのみnull以外の値を返します。アクティビティが再開された場合(つまり方向変更)には、nullポインタが返されます。このようなことを試してみてください。

@Override 
public void onCreate(Bundle savedInstanceState){ 
    super.onCreate(savedInstanceState 
    int diff; 
    if(savedInstanceState == null) 
     diff = getIntent().getIntExtra(KEY_DIFFICULTY, DIFFICULTY_NOVICE); 
} 

、その後、あなたはメソッドonRestoreInstanceState(outstateをバンドル)

関連する問題