android - 将 String[] 从一个 Activity 传递到另一个 Activity

标签 android string bundle

在主要 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/

相关文章:

android - 为什么在调用 setRetainInstance(true) 时,TextView 的文本没有恢复?

java - findViewById 时不需要强制转换?

android - 带有分页库的存储库模式

android - 强制销毁应用程序以进行测试

asp.net-mvc - asp.net MVC 中的多个 CDN 包

java - 在前一个 TextView 下添加另一个 TextView 作为第二个 TextView

r - 获取R中字符串第一个大写字母的索引?

java - 使用 Java 方法 indexof 与 substring 结合创建新字符串时出现错误输出

c++ - xcode std::wcout 与 wchar_t 或 std::wstring!

java - 如何使用onSavedInstance?