- 我使用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");
}
}