Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 将字符串[]从一个活动传递到另一个活动_Android_String_Bundle - Fatal编程技术网

Android 将字符串[]从一个活动传递到另一个活动

Android 将字符串[]从一个活动传递到另一个活动,android,string,bundle,Android,String,Bundle,在主活动中,我发送字符串[]名称,如下所示: private void sendNames() { Bundle b=new Bundle(); b.putStringArray("key", names); Intent i=new Intent(this, ListFriendsFragment.class); i.putExtras(b); } names = this.getIntent().getExtras().getStringArray("

在主活动中,我发送字符串[]名称,如下所示:

private void sendNames() {

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

}
 names = this.getIntent().getExtras().getStringArray("key");
当我发送名称时,它不是100%为空,并将此代码放入一个方法中,在我获得名称后调用它

在“活动”中,我希望接收字符串[],得到的结果如下:

private void sendNames() {

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

}
 names = this.getIntent().getExtras().getStringArray("key");
在主活动和我想要接收字符串的活动中,
names
声明如下:

private String[] 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();
}

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

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

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

只需这样做:

假设,字符串[]名称

Intent intent = new Intent(this, ListFriendsFragment.class);
intent.putExtra("key", names);
startActivity(intent);
在下一个活动中

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

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);

应用程序崩溃:
无法启动活动。。。空指针异常
发送部分正常,没有任何错误。FriendsListFragment不是一个片段,而是它的活动。仍然在FriendsStactivity上获取NullPointerException我在我的项目中搜索了
Intent
。请检查问题中的更新,因为这里很难理解。1。您的代码没有显示调用最后两个方法的位置。2.就像我写的,您在
sendNames()
中创建的
intent
sendNames()
完成执行时就被破坏了。您是对的。我将SendName和listFriends放在一起,并在开始活动时发送意图。非常感谢。