好的,我有我的应用程序到目前为止从SplashScreen打开一个新的Activity
。此活动打开后,会有一个按钮添加玩家,这会打开一个新的Activty
。在此Activty
中,我有Array
,其中将填充EditText
框。
添加播放器后,将点击播放按钮,该按钮将返回上一个Activity
。
我的问题是,当点击播放按钮并返回上一个Activty
时,我需要继承Array
并填充String
。
代码更新 - 现在没有强制关闭,但阵列似乎正在继续并填充strArray
一旦添加了玩家,我就有了这个按钮来携带Array
:
Button play = (Button) findViewById(R.id.playnow);
play.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent i = new Intent( demo.AddRemove.this, demo.play.class);
Bundle extras = new Bundle();
extras.putStringArrayList( "KEY", playerList );
i.putExtras( extras );
startActivity( i );
}});
}
这是为了显示结转的Array
:
super.onCreate(savedInstanceState);
Intent intent = getIntent();
if (extras == null) {
strArray = new String[0];
} else {
ArrayList<String> myStrings = extras.getStringArrayList("KEY");
if (myStrings == null) {
strArray = new String[0];
} else {
strArray = (String[]) myStrings.toArray();
}
}
setContentView(R.layout.passw_layout);
initWheel(R.id.passw_1, strArray);
但正如我之前所说的当我尝试从SplashScreen打开第一个Activty play.java时,它强制关闭java.lang.NullPointerException
。我认为这是因为extras
是空的。
答案 0 :(得分:2)
试试这个:
String[] strArray;
Intent intent = getIntent();
Bundle extras = intent.getExtras(); //Added this
if (extras == null) {
strArray = new String[0];
} else {
ArrayList<String> myStrings = extras.getStringArrayList("KEY");
if (myStrings == null) {
strArray = new String[0];
} else {
strArray = (String[]) myStrings.toArray();
}
}
答案 1 :(得分:1)
添加一个简单的null检查,并创建一个空数组:
String[] strArray;
if (extras == null) {
strArray = new String[0];
} else {
ArrayList<String> myStrings = extras.getStringArrayList("KEY");
if (myStrings == null) {
strArray = new String[0];
} else {
strArray = (String[]) myStrings.toArray();
}
}
如果您不喜欢这样一个深度嵌套的if语句,您还可以创建一个提取数组的方法,并在找到空值时使用early return返回数组。