Android:将额外信息更改为意图

3
我有一个应用程序,包含许多不同的活动。其中一个活动是我的主要活动,它的行为取决于启动主要活动的活动。我想通过让每个其他活动在意图中添加名为“launchedFrom”的额外调用来记录此状态,其中包含调用主要活动的活动名称字符串。但我遇到的问题是,一旦该值已经设置,就无法被另一个活动覆盖。我还没有找到很好的简单方法来解决这个问题。是否有任何建议?
以下代码从我的主要活动的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();
}

你能否添加你正在使用的代码来从意图中设置字符串? - theisenp
代码现在已经上线了。它实际上不是一个字符串,因为你不能在字符串上使用 switch。它是代表字符串的枚举类型。非常感谢您能提供的任何帮助。 - aamiri
1个回答

9

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接