3

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

在我的主要活动中从 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();
}
4

1 回答 1

9

您在调用 startActivity 时使用了 FLAG_ACTIVITY_SINGLE_TOP ,它有一些值得注意的行为。在这种情况下,覆盖onNewIntentsetIntent从那里调用。之后,平台将调用onResume,您的调用getIntent将返回新的意图。

于 2011-06-29T14:54:01.770 回答