Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 安卓:将附加功能更改为意图_Android_Android Activity_Android Intent_Extras - Fatal编程技术网

Android 安卓:将附加功能更改为意图

Android 安卓:将附加功能更改为意图,android,android-activity,android-intent,extras,Android,Android Activity,Android Intent,Extras,我有一个可以在许多不同活动之间运行的应用程序。一个活动,我的主要活动,其行为取决于应用程序中启动主要活动的活动。我想我可以通过让每个其他活动在intent中添加一个名为“launcehdFrom”的额外内容来记录这一点,该内容包含一个字符串,该字符串的名称为调用主活动的活动的名称。我遇到的问题是,一旦设置了该值,它就不能被其他活动覆盖。我还没有找到一个好的直接的方法来做这件事。有什么建议吗 以下代码是从我的主要活动中的onResume()调用的: private void process

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

以下代码是从我的主要活动中的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);
    }
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();
}
这是第一次启动主活动的代码:

public void launchMainActivity(Obj myObj){
    Intent launchMain = new Intent(this, mainActivity.class);
    login.putExtra("launchedFrom", ProcessIntentRequestType.startupActivity);
    startActivity(launchMain);
}
这是启动活动至少加载一次主活动后,从其他活动启动主活动的代码:

    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);
    }
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();
}

调用startActivity时,您使用的是FLAG_ACTIVITY_SINGLE_TOP,它具有一些显著的行为。在这种情况下,覆盖并从那里调用
setIntent
。之后,平台将调用
onResume
,您对
getIntent
的调用将返回新的intent。

您可以添加用于设置intent字符串的代码吗?代码现在已启动。它实际上不是一个字符串,因为不能在字符串上使用开关。它是一个表示字符串的枚举。我很感激你能给我的任何帮助。