Настройки Android Действия не переходят обратно к логическому родителю - PullRequest
0 голосов
/ 21 сентября 2018

У меня возникла проблема, связанная с тем, что у меня есть действие настроек, которое можно запустить из действия 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 была объявлена ​​родительской - кто-нибудь может посоветовать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...