Intent getExtras返回null

时间:2013-12-25 16:21:57

标签: android android-intent back-stack

我有三个活动A,B和C.让我们说任务在堆栈前面(A-> B-> C)。

现在,当点击通知时,我会使用意图标记Intent.FLAG_ACTIVITY_NEW_TASK和Intent.FLAG_ACTIVITY_CLEAR_TOP启动活动A,并按意图传递额外信息。

Intent AIntent = new Intent(getApplicationContext(), ActivityA.class);
AIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
AIntent.putExtra(Constants.IntentFields.FROM_NOTI, true);
AIntent.putExtra(Constants.IntentFields.GROUP_POS, groupActive);
AIntent.putExtra(Constants.IntentFields.CHILD_POS, childPos);

private PendingIntent getPendingIntent(Intent AIntent)
{
    int requestCode = (int) System.currentTimeMillis();
    return PendingIntent.getActivity(delegate, requestCode, AIntent, PendingIntent.FLAG_UPDATE_CURRENT);
}

现在调用A的oncreate,这里我调用getIntent并检查额外信息以查看它是否是从通知中触发的。如果是,我会通过再次传递一些额外信息来启动B。

//in A's onCreate()
Bundle extras = intent.getExtras();
if(extras!=null && extras.getBoolean(Constants.IntentFields.FROM_NOTI) && Delegate.INSTANCE.isLoggedIn())
{
    Intent BIntent = new Intent(ActivityA.this, ActivityB.class);
    Bundle bundle = new Bundle();
    bundle.putBoolean(Constants.IntentFields.FROM_NOTI, true);
    bundle.putInt(Constants.IntentFields.GROUP_POS, extras.getInt(Constants.IntentFields.GROUP_POS));
    bundle.putInt(Constants.IntentFields.CHILD_POS, extras.getInt(Constants.IntentFields.CHILD_POS));

    BIntent.putExtras(bundle);
    startActivity(BIntent);
}

当我调用getIntent()时,在B的onCreate()上,返回的intent不包含我从A传递的额外信息。

//called from B's onCreate
private void checkIntent(Intent intent)
{
    Bundle extras = intent.getExtras();
    if(extras!=null && extras.getBoolean(Constants.IntentFields.FROM_NOTI))
    {
        Log.e(Constants.TAG, "From noti");
        startC(extras);
    }
}

如何访问启动活动B的新意图?我试过onNewIntent(),但没有调用。

0 个答案:

没有答案