2

我一直在寻找几个小时,但似乎无法弄清楚这里发生了什么。我想通过一个意图在按下按钮时传递一个数组。在 Activity AI 中有(在 onclick 监听器中)

Intent i = new Intent(getApplicationContext(), classB);
i.putExtra("string",stringArray);
startActivity(i);

并且在 Activity BI 中有 onCreate 方法

final String theList[] = getIntent().getStringArrayExtra("string");

每当我尝试访问数组 theList 时,如下所示

textView.setText(theList[0]);

程序强制关闭,我似乎无法理解为什么......我觉得我一定错过了一些明显的东西,但几个小时后我似乎无法理解为什么 theList = null。

谢谢你,很抱歉问了一个看似重复的问题。

日志输出

04-10 19:44:52.815: D/AndroidRuntime(1794): Shutting down VM
04-10 19:44:52.815: W/dalvikvm(1794): threadid=1: thread exiting with uncaught exception (group=0x40015560)
04-10 19:44:52.835: E/AndroidRuntime(1794): FATAL EXCEPTION: main
04-10 19:44:52.835: E/AndroidRuntime(1794): java.lang.NullPointerException
04-10 19:44:52.835: E/AndroidRuntime(1794):     at sean.vieten.acm.Athletics$1.onClick(Athletics.java:66)
04-10 19:44:52.835: E/AndroidRuntime(1794):     at android.view.View.performClick(View.java:2485)
04-10 19:44:52.835: E/AndroidRuntime(1794):     at android.view.View$PerformClick.run(View.java:9080)
04-10 19:44:52.835: E/AndroidRuntime(1794):     at android.os.Handler.handleCallback(Handler.java:587)
04-10 19:44:52.835: E/AndroidRuntime(1794):     at android.os.Handler.dispatchMessage(Handler.java:92)
04-10 19:44:52.835: E/AndroidRuntime(1794):     at android.os.Looper.loop(Looper.java:123)
04-10 19:44:52.835: E/AndroidRuntime(1794):     at       android.app.ActivityThread.main(ActivityThread.java:3683)
04-10 19:44:52.835: E/AndroidRuntime(1794):     at java.lang.reflect.Method.invokeNative(Native Method)
04-10 19:44:52.835: E/AndroidRuntime(1794):     at java.lang.reflect.Method.invoke(Method.java:507)
04-10 19:44:52.835: E/AndroidRuntime(1794):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
04-10 19:44:52.835: E/AndroidRuntime(1794):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
04-10 19:44:52.835: E/AndroidRuntime(1794):     at dalvik.system.NativeStart.main(Native Method)    

问题解决了,似乎我有两个与同一个按钮匹配的 onclick 侦听器,因此当我单击该按钮时,会创建多个意图来解释崩溃。对我来说非常非常愚蠢的错误。

4

4 回答 4

1

在活动 B 中使用它。

 Intent intent= getIntent();

 theList[] = intent.getStringArrayExtra("string");
于 2013-04-10T07:50:26.807 回答
0

1) 不要使用getApplicationContext()useActivity的上下文
2) 使用比“字符串”更多的信息键名

祝你好运

于 2013-04-10T07:39:19.400 回答
0

我遇到了同样的问题,就我而言,我使用

List<String> list = new ArrayList<>;
...
Intent intent = new Intent();
intent.putExtra("string",list.toArray());
...
String strs = intent.getStringArrayExtra("string");

我发现 strs 始终为空,因为 list.toArray 返回一个对象数组;所以我们应该改用字符串数组

List<String> list = new ArrayList<>;
...
Intent intent = new Intent();
String[] strArr = new String[list.size()];
list.toArray(strArr);
intent.putExtra("string",strArr);
...
String strs = intent.getStringArrayExtra("string");

或者你可以得到一个 ArrayList 代替

Intent intent = new Intent();
intent.putStringArrayListExtra("string", arrayList);
...
List<String>  list = intent.getStringArrayListExtra("string");
于 2019-06-04T07:40:05.320 回答
0

活动一

Bundle b=new Bundle();
b.putStringArray("strings", new String[]{"aaa","bbb"});
Intent intent=new Intent(MainActivity.this,Main2Activity.class);
intent.putExtras(b);
startActivity(intent);

活动二

 Intent intent=getIntent();
 Bundle b=intent.getExtras();
 String[] array=b.getStringArray("strings");
于 2019-06-05T05:44:06.807 回答