使用片段和活动操作导航

时间:2013-12-25 06:59:53

标签: fragment back-button android-homebutton up-navigation

我将使用主页按钮(操作栏应用程序图标)作为后退按钮。我得到了它的工作,但不是我想要的方式。

我的MainActivity是一个活动,它包含(1)显示类别列表的抽屉。还有一个片段,显示抽屉中所选类别中的项目列表。

单击列表中的项目时,将启动新的DetailActivity以显示详细信息。

这里开始出现问题: 当我按下Back按钮时,从DetailActivity返回到MainActivity,就像点击项目以显示细节之前一样。这就是我的期望。但是,当使用主页按钮作为向上导航时,它会启动MainActivity,就像我再次打开应用程序一样。没有显示之前显示的列表。

我在开发人员文档中读到了我必须使用的片段:.add(detailFragment,“detail”)和.addToBackStack()然后提交。

但是我想添加添加(---,“---”)。然后我应该如何使用它?!

这是我的代码:

该方法是显示内容的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);
}

最后在Manifest中我使用下面的代码介绍MainActivity作为LessonDetailActivity的一部分:

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

我希望Home按钮作为向上导航,其行为类似于后退按钮,这样当单击它时,它会将我带到MainActivity,就像打开LessonDetailActivity之前一样。上面的代码没有这样做,每次我在操作栏中按Home都会从头开始启动MainActivity。

有人可以帮我这个吗? 我也应该说我是新人,所以如果答案详细,我会很感激。

0 个答案:

没有答案