Навигация вверх по панели действий с фрагментом и активностью

Я собираюсь использовать кнопку «Домой» (значок приложения на панели действий) в качестве кнопки «Назад». Я заставил его работать, но не так, как я хотел.

My MainActivity — это действие, которое содержит (1) ящик со списком категорий. И фрагмент, который отображает список элементов в категории, выбранной в ящике.

при щелчке элемента в списке запускается новая активность DetailActivity для отображения сведений.

здесь начинается проблема: из DetailActivity, когда я нажимаю кнопку «Назад», он возвращается к MainActivity, как это было до нажатия элемента, чтобы показать подробности. Это то, что я ожидаю. Однако при использовании кнопки «Домой» в качестве навигации «Вверх» она запускает MainActivity, как если бы я снова открыл приложение. Не показывать список, который был показан ранее.

Я читал в документах разработчика, что для фрагментов я должен использовать: .add(detailFragment, "detail") и .addToBackStack(), затем зафиксировать.

Но что я должен добавить в add(---,"---"). И как тогда мне его использовать?!

это мои коды:

метод - это MainActivity, который показывает содержимое:

    public void refreshDisplay(Context context, View view, String category, int i) {

    List<Lesson> lessonByCategory = datasource.findByCategory(category, i);

    final ListView lv = (ListView) view.findViewById(R.id.listView);
    final ArrayAdapter<Lesson> adapter = new LessonListAdapter(context, lessonByCategory);
    lv.setAdapter(adapter);


    lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        public void onItemClick (AdapterView<?> parent, View view, int position, long id) {
            Log.i(LOGTAG, "onListItemClick called");

            ArrayAdapter<Lesson> m_adapter = adapter;
            // get the Lesson object for the clicked row
            Lesson lesson = m_adapter.getItem(position);

            Intent intent = new Intent(MainActivity.this, LessonDetailActivity.class);

            intent.putExtra(".model.Lesson", lesson);
            intent.putExtra("isStared", isStared);

            startActivityForResult(intent, LESSON_DETAIL_ACTIVITY);

        }
    });
    }

В моем LESSON_DETAIL_ACTIVITY, который показывает подробное содержимое, у меня есть этот код, чтобы включить навигацию для кнопки «Домой»:

public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {

    // I have some other cases here

    case android.R.id.home:
        NavUtils.navigateUpFromSameTask(this);
        return true;
    }

    return super.onOptionsItemSelected(item);
}

И, наконец, в манифесте я использовал приведенный ниже код, чтобы ввести MainActivity в качестве родителя LessonDetailActivity:

  <activity
        android:name=".LessonDetailActivity">
        <meta-data
        android:name="android.support.PARENT_ACTIVITY"
        android:value="com.example.MainActivity" />
    </activity>

Я хочу, чтобы кнопка «Домой» в качестве навигации вверх вела себя как кнопка «Назад», чтобы при ее нажатии я переходил к MainActivity, как это было до открытия LessonDetailActivity. Приведенный выше код этого не делает, и каждый раз, когда я нажимаю «Домой» на панели действий, он запускает MainActivity с нуля.

Может ли кто-нибудь помочь мне с этим, пожалуйста? Я также должен сказать, что я новичок, поэтому я был бы признателен, если бы ответы были подробными.


person Kian Tamar    schedule 25.12.2013    source источник
comment
Задача решена. У меня недостаточно доверия, чтобы ответить на мой собственный вопрос. Вместо того, чтобы использовать кнопку «Домой» для просмотра стека, я просто использовал finish(); в операторе switch case для onOptionsItemSelected. Нет необходимости определять родительскую активность.   -  person Kian Tamar    schedule 25.12.2013
comment
Спасибо @dymmeh. Также посмотрите здесь ссылка   -  person Kian Tamar    schedule 25.12.2013