0

ホーム ボタン (アクション バー アプリ アイコン) を戻るボタンとして使用します。私はそれを機能させましたが、意図した方法ではありませんでした。

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>

ホームボタンをアップナビゲーションとしてバックボタンのように動作させて、クリックすると、LessonDetailActivity を開く前と同じように MainActivity に移動するようにします。上記のコードではそれが行われず、アクション バーで Home を押すたびに MainActivity が最初から開始されます。

誰でもこれで私を助けてもらえますか? また、私は新しいので、回答が詳細であればありがたいです。

4

0 に答える 0