Java 大脑死亡时刻:与Android一起传递捆绑包

Java 大脑死亡时刻:与Android一起传递捆绑包,java,android,android-intent,bundle,Java,Android,Android Intent,Bundle,因此,在尝试从启动活动的意图检索捆绑包时,我得到了一个空指针异常 上一个活动中的代码是: Bundle b = new Bundle(); Intent that = new Intent(this, GoogleMapSearchActivity.class); that.putExtra("bundle", b); startActivity(that); 被调用的活动尝试查找具有以下内容的捆绑包: Bundle bund; Intent activity = getIntent(); b

因此,在尝试从启动活动的意图检索捆绑包时,我得到了一个空指针异常

上一个活动中的代码是:

Bundle b = new Bundle();
Intent that = new Intent(this, GoogleMapSearchActivity.class);
that.putExtra("bundle", b);
startActivity(that);
被调用的活动尝试查找具有以下内容的捆绑包:

Bundle bund;
Intent activity = getIntent();
bund = activity.getBundleExtra("bundle");
然后,空指针异常指向最后一行,接着是我脸上的一个非常愚蠢的表情和我内心的一种挫败感

08-02 01:32:43.249: E/AndroidRuntime(2162): FATAL EXCEPTION: main
08-02 01:32:43.249: E/AndroidRuntime(2162): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.donatorproj/com.example.donatorproj.GoogleMapSearchActivity}: java.lang.NullPointerException
08-02 01:32:43.249: E/AndroidRuntime(2162):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
08-02 01:32:43.249: E/AndroidRuntime(2162):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
08-02 01:32:43.249: E/AndroidRuntime(2162):     at android.app.ActivityThread.access$600(ActivityThread.java:141)
08-02 01:32:43.249: E/AndroidRuntime(2162):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
08-02 01:32:43.249: E/AndroidRuntime(2162):     at android.os.Handler.dispatchMessage(Handler.java:99)
08-02 01:32:43.249: E/AndroidRuntime(2162):     at android.os.Looper.loop(Looper.java:137)
08-02 01:32:43.249: E/AndroidRuntime(2162):     at android.app.ActivityThread.main(ActivityThread.java:5041)
08-02 01:32:43.249: E/AndroidRuntime(2162):     at java.lang.reflect.Method.invokeNative(Native Method)
08-02 01:32:43.249: E/AndroidRuntime(2162):     at java.lang.reflect.Method.invoke(Method.java:511)
08-02 01:32:43.249: E/AndroidRuntime(2162):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
08-02 01:32:43.249: E/AndroidRuntime(2162):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
08-02 01:32:43.249: E/AndroidRuntime(2162):     at dalvik.system.NativeStart.main(Native Method)
08-02 01:32:43.249: E/AndroidRuntime(2162): Caused by: java.lang.NullPointerException
08-02 01:32:43.249: E/AndroidRuntime(2162):     at com.example.donatorproj.GoogleMapSearchActivity.addInitialDataMarkers(GoogleMapSearchActivity.java:85)
08-02 01:32:43.249: E/AndroidRuntime(2162):     at com.example.donatorproj.GoogleMapSearchActivity.onCreate(GoogleMapSearchActivity.java:78)
08-02 01:32:43.249: E/AndroidRuntime(2162):     at android.app.Activity.performCreate(Activity.java:5104)
08-02 01:32:43.249: E/AndroidRuntime(2162):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
08-02 01:32:43.249: E/AndroidRuntime(2162):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
08-02 01:32:43.249: E/AndroidRuntime(2162):     ... 11 more

可能是因为你的包是空的。尝试使用hasExtra(“bundle”)检查它是否有bundle。

我只想列出各个参数,例如

Intent intent = new Intent (SomeActivity.this, AnotherActivity.class);
    intent.putExtra("paramName1", theString);
    intent.putExtra("paramName2", "anotherString");
    startActivity(intent);
然后在启动的活动中,

Bundle extras = getIntent().getExtras();
    if (extras != null) {
        variable1 = extras.getString("paramName1");
        variable2 = extras.getString("paramName2");
    }
传递的一个参数或整个包必须包含第78行显示的空值。可能会对这个问题有所帮助。
希望这有帮助。

使用捆绑包的步骤:

目的捆绑:

Intent mIntent = new Intent(this, A.class);

Bundle extras = mIntent.getExtras();

extras.putString(key, value);
创建捆绑包

Intent intent = new Intent(this, A.class);

Bundle mBundle = new Bundle();

mBundle.extras.putString(key, value);

intent.putExtras(mBundle);
使用的额外方法

Intent intent = new Intent(this, A.class);

intent.putExtra(key, value);
然后,在启动的活动中,您可以通过以下方式阅读:

String values = getIntent().getExtras().getString(key)
这就做到了:

Bundle b = new Bundle();
Intent that = new Intent(this, GoogleMapSearchActivity.class);
that.putExtras(b); // formerly that.putExtra("bundle", b);
startActivity(that);

Bundle bund;
Intent activity = getIntent();
bund = activity.getExtras(); // fomerly bund = activity.getBundleExtra("bundle");

我的问题通过简单地使用putExtras方法而不是putExtra解决了,然后使用键名调用getBundleExtra。我真的不明白为什么这是我做的第一个方法,但它不会起作用

您可以发布堆栈跟踪吗?不确定,但只需尝试
Intent that=newintent(YourCurrentActivityname.this,GoogleMapSearchActivity.class)