从另一个活动

时间:2016-05-03 20:49:52

标签: android android-intent android-activity android-navigation

我正在创建一个具有聊天功能的库项目,因此用户必须将其启动活动注册为父项才能执行反向堆栈(导航返回)。 这是示例应用程序的清单..

<activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:launchMode="singleTop">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name="com.ak.messages.ChatActivity"
            android:label="@string/app_name"
            android:screenOrientation="sensorPortrait"
            android:parentActivityName=".MainActivity"
            android:theme="@style/AppTheme"
            android:windowSoftInputMode="adjustResize">
            <meta-data android:name="android.support.PARENT_ACTIVITY"
                android:value=".MainActivity" />
        </activity>

以下是我尝试从ChatActivity导航回来的方法

   @Override
    public void onBackPressed() {
        Intent intent = NavUtils.getParentActivityIntent(this);
            if(intent!=null){
            intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
                startActivity(intent);

        }
//      super.onBackPressed();
    }

但它始终在创建一个新实例。是否有任何方法可以确保在用户执行反压时撤消相同的MainActivity实例?

  

PS:我没有直接使用MainActivity调用聊天活动   提供API以启动它。

谢谢。

2 个答案:

答案 0 :(得分:0)

为什么不尝试替换

intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);

intent.setFlags(FLAG_ACTIVITY_SINGLE_TOP);

通过这种方式,您将恢复父活动,并将在onNewIntent()的{​​{1}}

中接听回电

答案 1 :(得分:0)

最终能够在意图行动的帮助下访问/启动活动:

 @Override
    public void onBackPressed() {
        Intent intent = NavUtils.getParentActivityIntent(this);
            if(intent!=null){
            intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
                intent.setAction("android.support.PARENT_ACTIVITY");
            startActivity(intent);
        }super.onBackPressed();
    }

用户可以从意图处理中获取操作..