我一直在寻找好几个小时但似乎无法弄清楚这里发生了什么。我希望通过按钮按下按钮传递数组。在活动A中我(在onclick监听器中)
Intent i = new Intent(getApplicationContext(), classB);
i.putExtra("string",stringArray);
startActivity(i);
并且在活动B中我有onCreate方法
final String theList[] = getIntent().getStringArrayExtra("string");
每当我尝试按如下方式访问数组时,
textView.setText(theList[0]);
程序部队关闭,我似乎无法理解为什么......我觉得我必须错过明显明显的事情,但是几个小时后我似乎无法理解为什么theList = null。
谢谢你,并且对于询问什么似乎是一个重复的问题感到抱歉。
logcat输出
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听众匹配到同一个按钮,所以当我点击按钮时,会创建多个意图来解释崩溃。我非常非常愚蠢的错误。
答案 0 :(得分:1)
在活动B中使用此功能。
Intent intent= getIntent();
theList[] = intent.getStringArrayExtra("string");
答案 1 :(得分:0)
1)不要使用getApplicationContext()
使用Activity
的上下文
2)使用比“string”更多的信息密钥名称
答案 2 :(得分:0)
我遇到了同样的问题,以我为例
List<String> list = new ArrayList<>;
...
Intent intent = new Intent();
intent.putExtra("string",list.toArray());
...
String strs = intent.getStringArrayExtra("string");
我发现strs始终为null,因为list.toArray返回一个对象数组;因此我们应该改用String数组
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");
答案 3 :(得分:0)
活动1
Bundle b=new Bundle();
b.putStringArray("strings", new String[]{"aaa","bbb"});
Intent intent=new Intent(MainActivity.this,Main2Activity.class);
intent.putExtras(b);
startActivity(intent);
活动2
Intent intent=getIntent();
Bundle b=intent.getExtras();
String[] array=b.getStringArray("strings");