NullPointerException in Intent.getIntent().getExtras()


  • 我使用Intent传递名称(ArrayList)从一个活动到另一个。
  • 我在第二个活动的onCreate()方法中调用了getIntent()方法。
  • 想在我自己的函数中使用传递的名称(ArrayList),但是超出了的范围

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent intent = getIntent();

Bundle bundle = intent.getExtras();
ArrayList<String> namesList = bundle.getStringArrayList("names");
}

要在this中使用名称:


public class game_main extends AppCompatActivity {
TextView playerNameHolder;
.........................
.........................
.........................
Intent intent = getIntent();
Bundle bundle = intent.getExtras();
ArrayList<String> namesList = bundle.getStringArrayList("names");
........................
........................
........................
public void gameReset(View view) {
........................
........................
TextView playerNameHolder = (TextView) findViewById(R.id.turn_status);
playerNameHolder.setText(namesList.get(0) + "'s turn");
}
}

namesList.get(0)在Bundle行代码不包含时超出作用域,但是当包含时它给出空指针异常

. lang。在null对象引用上尝试调用虚拟方法'android.os.Bundle android.content.Intent.getExtras()'

不要从字段初始化器中调用AppCompatActivity(或超类)上的方法,就像您在第二个代码片段中对Intent intent = getIntent();所做的那样。

您需要结合您的两种方法:将namesList作为字段并在onCreate()中初始化它:

public class game_main extends AppCompatActivity {
ArrayList<String> namesList;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent intent = getIntent();

Bundle bundle = intent.getExtras();

namesList = bundle.getStringArrayList("names");
}
}

最新更新