在Android中获取Java语言空指针异常

在Android中获取Java语言空指针异常,java,android,Java,Android,我一直在编写一个android应用程序,突然出现了一个错误,错误日志显示my Game.Java的第23行有Java.Lang.Null.pointer.exception,但是没有任何与此相关的代码被更改。这里是代码:有什么想法吗 主类 public void onClick(View v) { switch (v.getId()) { case R.id.about_button: Intent i = new Intent(this, Abo

我一直在编写一个android应用程序,突然出现了一个错误,错误日志显示my Game.Java的第23行有Java.Lang.Null.pointer.exception,但是没有任何与此相关的代码被更改。这里是代码:有什么想法吗

主类

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);

如果这是它发生的行,那么这意味着从getIntent返回的值为null。这就是为什么您应该始终避免在方法调用的返回结果上调用方法,请参见


您应该仔细检查并了解此活动是如何开始的。问题可能就在那里。

您没有上传足够的代码来说明问题。。但是如果让我猜的话。。 getIntent仅在从StartName方法调用时返回非null值。如果您的活动重新启动,即方向更改,您将得到一个空指针。试试这样的

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

然后,如果要保存状态,请查看方法onRestoreInstanceStateBundle outstate

是否也可以发布stacktrace?。getIntent必须返回null值,然后在调用getIntExtra时。。在null值上,您将获得exception.getIntent返回null,因为没有首先调用onCreate。。。。把这行移到onCreate edit:after super.onCreate抱歉,我对编程还是比较陌生,stacktrace到底是什么?在android上,你可以在logcat日志中找到它