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

aam*_*iri 3 android extras android-intent android-activity

我有一个应用程序介于许多不同的活动之间.一项活动,我的主要活动,其行为取决于应用程序中的哪个活动启动了主要活动.我想我可以通过让其他所有活动将一个名为"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);
    }
Run Code Online (Sandbox Code Playgroud)

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

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

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

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();
}
Run Code Online (Sandbox Code Playgroud)

Ste*_*ice 9

在调用具有一些值得注意的行为的startActivity时,您正在使用FLAG_ACTIVITY_SINGLE_TOP.在这种情况下,从那里覆盖onNewIntent和调用setIntent.之后,平台将呼叫onResume并且您的呼叫getIntent将返回新意图.