0

1 つのボタンを押すと、別の ListActivity を表示するインテントを開始する ListActivity がありました。ここで、これらの ListActivities を ListFragments に変更する必要があります。レイアウトを膨らませるためにこれを行います:

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    /**Inflate the layout for this fragment*/
    return inflater.inflate(R.layout.recent_calls, container, false);
}

そして、意図を開始するために、今、私はフラグメントとして、これを行います:

CallDetailActivity Fragment_detail = new CallDetailActivity();
        FragmentManager fm = getFragmentManager();
        FragmentTransaction transaction = fm.beginTransaction();
        transaction.replace(R.id.recent_calls, Fragment_detail);
        transaction.addToBackStack(null);
        transaction.commit();

私の質問は、R.id.recent_callsreplace を挿入した場所で、onCreateView で初期化したのと同じレイアウトの FrameLayout ID を呼び出しているということです。これでよろしいですか?または、フラグメントを使用するときに実際のレイアウトを別のレイアウトに置き換える別の方法はありますか? インテントのようなものは、アクティビティに対して行います。

アップデート -

「型fragmenttransactionのメソッドreplace(int、fragment)は、引数(int、CallDeateilActivity)には適用でき.replaceません」と表示されているため、エラーが発生しています

更新 2--

<FrameLayout 
android:id="@+id/recent_calls"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">

<ListView 
    android:id="@android:id/list"
    android:layout_width="match_parent" 
    android:layout_height="match_parent"
    android:scrollbarStyle="outsideOverlay"/>

<TextView 
    android:id="@android:id/empty"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:text="Call log is empty"
    android:gravity="center"
    android:textAppearance="?android:attr/textAppearanceLarge"/>

4

1 に答える 1

1

サポート ライブラリのフラグメントとネイティブ Android のフラグメントを混在させているようです。

何分を選択する必要があります。サポートしたいSDKのバージョンを確認してから、使用するフラグメントを決定してください。

私の質問は、R.id.recent_calls を置き換えた場所で、onCreateView で初期化した同じレイアウトの FrameLayout id を呼び出していることです。これでよろしいですか?

私はより多くのOOPを使用することを好みます-フラグメント送信コールバックからフラグメントを切り替えるなどの変換を処理する1つのコントローラーを作成できます。

この質問も確認してください: Fragment add or replace not working

于 2013-11-07T11:37:59.597 に答える