[英]Getting Java Lang Null pointer exception in Android
我一直在編碼一個Android應用程序,突然突然開始出現錯誤,錯誤日志顯示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。 這就是為什么您應該始終避免在方法調用的返回結果上調用方法的原因(請參閱Demeter定律 )。
您應該仔細檢查,看看該活動是如何開始的。 麻煩就在那兒。
您沒有上載足夠的代碼來清楚說明。.但是,如果我不得不猜測..如果從startGame()方法調用了getIntent(),則它只會返回一個非null值。 如果您的活動重新開始(即方向更改),您將獲得一個空指針。 嘗試這樣的事情。
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState
int diff;
if(savedInstanceState == null)
diff = getIntent().getIntExtra(KEY_DIFFICULTY, DIFFICULTY_NOVICE);
}
然后,如果要保存狀態,請查看方法onRestoreInstanceState(Bundle outstate)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.