从另一个 activity 返回父 activity 的现有实例
Returning to parent activity's existing instance from another activity
我正在创建一个具有聊天功能的库项目,因此用户必须将他的启动 activity 注册为父项才能执行回溯(向后导航)。
这是我的示例应用程序清单..
<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: Chat activity is not directly invoked by MainActivity I have
provided with APIs to launch it.
谢谢。
为什么不尝试替换
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
和
intent.setFlags(FLAG_ACTIVITY_SINGLE_TOP);
这样您将恢复父级 activity 并将在 Parent Activity
的 onNewIntent()
收到回电
终于能够 access/launch activity 借助意图操作:
@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();
}
用户可以从 intent 中获取操作以处理..
我正在创建一个具有聊天功能的库项目,因此用户必须将他的启动 activity 注册为父项才能执行回溯(向后导航)。 这是我的示例应用程序清单..
<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: Chat activity is not directly invoked by MainActivity I have provided with APIs to launch it.
谢谢。
为什么不尝试替换
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
和
intent.setFlags(FLAG_ACTIVITY_SINGLE_TOP);
这样您将恢复父级 activity 并将在 Parent Activity
onNewIntent()
收到回电
终于能够 access/launch activity 借助意图操作:
@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();
}
用户可以从 intent 中获取操作以处理..