将String []从一个活动传递到另一个活动

时间:2013-10-12 16:59:16

标签: android string bundle

在主要活动中,我发送String []名称,如下所示:

private void sendNames() {

    Bundle b=new Bundle();
    b.putStringArray("key", names);
    Intent i=new Intent(this, ListFriendsFragment.class);
    i.putExtras(b);

}

当我发送名字时,它不是100%的空,并将此代码放在一个方法中,并在我得到名字后调用它。

在活动中,我希望收到字符串[],我会这样:

 names = this.getIntent().getExtras().getStringArray("key");

在主要活动和我希望收到字符串的活动中,names声明如下:

private String[] names;

当我启动应该让names应用程序崩溃的活动时:

Caused by: java.lang.NullPointerException
at com.utm.course.friendslist.ListFriendsFragment.PrintNames(ListFriendsFragment.java:26)
at com.utm.course.friendslist.ListFriendsFragment.onCreate(ListFriendsFragment.java:20)

我做错了什么?


更新

这些是我使用Intent

的部分
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (currentSession != null) {
        currentSession.onActivityResult(this, requestCode, resultCode, data);
    }
}
...
private void sendNames() {
    Log.d("sendNames", "started");
    Bundle b=new Bundle();
    b.putStringArray(key, names);
    Intent i=new Intent(this, ListFriendsFragment.class);
    i.putExtras(b);
}
...
 private void listFriends() {
    Log.d("Activity", "List Friends Activity Starting");
    Intent i=new Intent(MainActivity.this,ListFriendsFragment.class);
    startActivity(i);
    finish();
}

3 个答案:

答案 0 :(得分:3)

看起来sendNames()没有返回您创建的意图,您可能会在其他地方调用startActivity(i);,此处您创建的意图不再在范围内。

更改sendNames()的签名以返回您创建的意图,并在开始活动时使用该意图。

如果您将使用调试器运行,请在启动活动的位置添加一个断点,并确保您传递的意图包含带有“key”字符串数组的该包。

答案 1 :(得分:0)

就这样做:

假设,String []名称;

Intent intent = new Intent(this, ListFriendsFragment.class);
intent.putExtra("key", names);
startActivity(intent);

在下一个活动中,

Intent intent = getIntent();
String[] names = intent.getStringArrayExtra("key");

答案 2 :(得分:0)

发送

Bundle b=new Bundle();
b.putStringArray(key, new String[]{value1, value2});
Intent i=new Intent(context, Class);
i.putExtras(b);

接收

Bundle b=this.getIntent().getExtras();
String[] array=b.getStringArray(key);