У меня возникла проблема, связанная с тем, что у меня есть действие настроек, которое можно запустить из действия MainActivity или действия NewsArticles (MainActivity является родительским элементом для NewsArticles), и я хочу вернуться к логическому родителю.Глядя на документацию, кажется, что вы должны объявить родительское действие в манифесте:
<activity
android:name=".MainActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".NewsArticles"
android:label="@string/news_articles_title"
android:parentActivityName=".MainActivity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".MainActivity" />
<meta-data android:name="android.app.default_searchable"
android:value=".SearchActivity"/>
</activity>
<activity
android:name=".SettingsActivity"
android:label="@string/settings_title"
android:parentActivityName=".NewsArticles">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".NewsArticles" />
</activity>
Итак, я объявил, что у моего действия с настройками есть активность NewsArticles в качестве родителя.Но действие настройки также можно запустить из MainActivity - как я могу справиться с этой ситуацией?В моей НастройкеActivity:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_settings);
ButterKnife.bind(this);
setSupportActionBar(mToolbar);
ActionBar actionBar = this.getSupportActionBar();
if(actionBar!= null)
actionBar.setDisplayHomeAsUpEnabled(true);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
case android.R.id.home:
//FIXME when user press back it always goes back to main activity regardless
//The settings activity can be launched from either the main activity or the news articles activity
//So we want to navigate up from the same task.
NavUtils.navigateUpFromSameTask(this);
return true;
}
return super.onOptionsItemSelected(item);
}
Я знаю, что когда пользователь перемещается по действиям, он должен создавать задачу действий, и если пользователь нажимает кнопку назад или вверх, он должен перемещаться вверх от логического родителя, который его запустил.Мое приложение находится в режиме запуска одиночного запуска, и в этом случае я всегда возвращаюсь к MainActivity, даже несмотря на то, что активность NewsArticles была объявлена родительской - кто-нибудь может посоветовать?