在主要 Activity 中,我像这样发送 String[] 名称:
private void sendNames() {
Bundle b=new Bundle();
b.putStringArray("key", names);
Intent i=new Intent(this, ListFriendsFragment.class);
i.putExtras(b);
}
当我发送名字时它不是 100% 空的,并将这段代码放在一个方法中,并在我得到名字后调用它。
在 Activity 中,我想接收字符串[],我是这样得到的:
names = this.getIntent().getExtras().getStringArray("key");
在主 Activity 和我想接收字符串的 Activity 中,names
声明如下:
private String[] names;
当我启动应该获取 names
的 Activity 时,应用程序崩溃了:
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()
没有返回您创建的 Intent ,您可能在其他地方调用了 startActivity(i);
,而您在此处创建的 Intent 不再存在在范围内。
更改 sendNames()
的签名以返回您创建的 Intent 并在您开始 Activity 时使用该 Intent 。
如果您将使用调试器运行,请在开始 Activity 的位置添加一个断点,并确保您传递的Intent bundle 含带有“key”字符串数组的 bundle 。
关于android - 将 String[] 从一个 Activity 传递到另一个 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19336824/