Android:将额外内容更改为意图

时间:2011-06-28 18:57:51

标签: android android-activity android-intent extras

我有一个介于许多不同活动之间的应用程序。一项活动,我的主要活动,其行为取决于应用程序中的哪个活动启动了主要活动。我想我可以通过让其他所有活动将一个名为“launcehdFrom”的额外活动放入intent中来记录这一点,其中包含一个名为hte activity的字符串,该字符串称为主要活动。我遇到的问题是,一旦设置了该值,它就不能被另一个活动覆盖。我没有找到一个很好的直接方法来做到这一点。有什么建议??

在我的主要活动中从onResume()调用以下代码:

    private void processIntentRequest(){
    Intent intent = getIntent();
    ProcessIntentRequestType caller = (ProcessIntentRequestType)intent.getSerializableExtra("launchedFrom");
    switch(caller){
        case startUpActivity:
            load(this.myObj);
            break;

        case otherActivity:
            int uri = integer.parseInt(this.getIntent().getExtras().getString("uri"));          
            load(this.myObj, uri);
            break;

        default:
            load(this.myObj, 1);
    }

这是第一次启动主要活动的代码:

public void launchMainActivity(Obj myObj){
    Intent launchMain = new Intent(this, mainActivity.class);
    login.putExtra("launchedFrom", ProcessIntentRequestType.startupActivity);
    startActivity(launchMain);
}

这是在启动活动至少加载一次后从其他一些活动启动主要活动的代码:

protected void launchMainActivity(Obj myObj, HelperObj helper) {
    String uri = helper.uri;
    Intent mainActivity = new Intent(this, MainActivity.class);
    mainActivity.putExtra("uri", uri);
    mainActivityputExtra("launchedFrom", ProcessIntentRequestType.otherActivity);
    startActivity(mainActivity.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP)
                    .addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT));
    finish();
}

1 个答案:

答案 0 :(得分:9)

在调用具有一些值得注意的行为的startActivity时,您正在使用FLAG_ACTIVITY_SINGLE_TOP。在这种情况下,请覆盖onNewIntent并从那里调用setIntent。之后,平台会致电onResume,您对getIntent的通话将返回新意图。