1

在主要活动中,我发送 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();
}
4

3 回答 3

3

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

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

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

于 2013-10-12T17:07:34.733 回答
0

这样做:

假设,String[] 名称;

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

在接下来的活动中,

Intent intent = getIntent();
String[] names = intent.getStringArrayExtra("key");
于 2013-10-12T17:18:51.397 回答
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);
于 2013-10-12T19:12:42.237 回答