3

以下のコードを使用して、アクティビティ内にフラグメントを追加しました。

    FragmentManager fragmentManager=getFragmentManager();
    FragmentTransaction fragmentTransaction=fragmentManager.beginTransaction();
    PreferenceFragment preferencefragment=new Preferencefragment();
    fragmentTransaction.add(R.id.maincontainer, preferencefragment);
    fragmentTransaction.addToBackStack(null);
    fragmentTransaction.commit();

レイアウト ファイル:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<DigitalClock
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/digitalClock"
    android:layout_gravity="center"
    android:textColor="@color/appcolor"
    android:layout_centerHorizontal="true"
    style="@android:style/TextAppearance.DeviceDefault.Large"
    android:textSize="45dp"/>
<TimePicker
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:id="@+id/timePickersms" />

<FrameLayout
    android:id="@+id/maincontainer"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

アクティビティにはデジタル時計とタイムピッカーがあり、その下にフラグメントが表示されます。最初に戻るボタンをクリックするとフラグメントが消え、後で前のアクティビティが表示されます。以前のアクティビティを一発で表示するにはどうすればよいですか?

次の質問は、画面上でボタンが押されたときにフラグメントを更新するにはどうすればよいですか?

4

1 に答える 1

9

addToBackStack(null)バックが押されると自動的にポップアウトされるバックスタックにフラグメントを追加します。

したがって、これは 2 つの方法で修正できます (どちらでも構いません)。

削除する addToBackStack(null)

また

次のコードをアクティビティに追加します。

@Override
public void onBackPressed(){
    finish();
}

編集:

フラグメントの更新に関する限り、ここでも 2 つのオプションがあります。1 つ目は、単純に古いフラグメントを古いフラグメントに置き換えることです。2 つ目は、フラグメントのオブジェクトを維持し、フラグメント内のデータを更新するためのセッター/ゲッター関数を使用できることです。

于 2013-10-27T09:36:03.177 に答える