我的意图的一些额外内容遗失

时间:2018-01-12 13:59:25

标签: java android

我有两个活动,我试图将一些数据从一个活动传递到另一个活动,这显示了一些奇怪的行为。我正在获取其他活动中某些键的数据,但其中一些键缺失(null)。

我收到了mStartStopInfomVehicleRide,而捆绑包中缺少其他2个密钥。

以下是启动其他活动的代码:

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

    String startStopInfo = String.format("%s - %s", mVehicleRide.getStartStopInfo().getDepartureTime(), mVehicleRidesFromStopsResponse.getStartStopName());
    String endStopInfo   = String.format("%s - %s", mVehicleRide.getEndStopInfo().getDepartureTime(), mVehicleRidesFromStopsResponse.getEndStopName());

    Bundle bundle = new Bundle();
    bundle.putString(INTENT_KEY_START_STOP_INFO, startStopInfo);
    bundle.putString(INTENT_KEY_END_STOP_INFO, endStopInfo);
    bundle.putParcelable(INTENT_KEY_ROUTE_STOP_INFO, mVehicleRide);
    bundle.putString(INTENT_KEY_RIDE_DATE, mVehicleRidesFromStopsResponse.getDate());
    intent.putExtras(bundle);
    startActivityForResult(intent, 1);

以下是在其他活动中收集数据的代码:

@Override
protected void initData(@Nullable Bundle savedInstanceState) {
    if (savedInstanceState == null) {

        Bundle bundle = getIntent().getExtras();
        if(bundle == null){
            finish();
        }

        mStartStopInfo = bundle.getString(INTENT_KEY_START_STOP_INFO);
        mEndStopInfo = bundle.getString(INTENT_KEY_END_STOP_INFO);
        mVehicleRide = bundle.getParcelable(INTENT_KEY_ROUTE_STOP_INFO);
        mDate = bundle.getString(INTENT_KEY_RIDE_DATE);

     }
}

有什么问题吗?

编辑:我也遇到以下异常:

W/ArrayMap: New hash 0 is before end of array hash 235905106 at index 2 key 

java.lang.RuntimeException: here
at android.util.ArrayMap.append(ArrayMap.java:547)
at android.os.Parcel.readArrayMapInternal(Parcel.java:3046)
at android.os.BaseBundle.unparcel(BaseBundle.java:257)
at android.os.BaseBundle.getBoolean(BaseBundle.java:825)
at android.content.Intent.getBooleanExtra(Intent.java:6914)
at io.branch.referral.Branch.checkIntentForSessionRestart(Branch.java:2540)
at io.branch.referral.Branch.access$1100(Branch.java:73)
at io.branch.referral.Branch$BranchActivityLifeCycleObserver.onActivityStarted(Branch.java:2460)
at android.app.Application.dispatchActivityStarted(Application.java:236)
at android.app.Activity.onStart(Activity.java:1258)
at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:552)
at android.support.v7.app.AppCompatActivity.onStart(AppCompatActivity.java:177)
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1412)
at android.app.Activity.performStart(Activity.java:7015)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2909)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3046)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1688)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6809)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)

1 个答案:

答案 0 :(得分:0)

  

您的信息不够,但我的假设是错误的   类型。(如果其他部分是正确的)

检查您添加的变量类型。您正试图通过以下方式获取所有额外内容:

getStringExtra()

在你的情况下;如果您的任何额外数据类型与String不同,则它们将为null。

例如;如果您的变量类型是整数,则必须通过以下方式获取此数据:

getIntExtra()