将数组传递给新活动

时间:2012-01-12 15:11:57

标签: android

好的,我有我的应用程序到目前为止从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是空的。

2 个答案:

答案 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返回数组。