8

私は完全に混乱しています。this およびthisおよび他の多くの情報源によると、SO と他の場所の両方で、次のことができるはずです。

import android.os.Bundle;
import android.app.Activity;
import android.app.FragmentTransaction;
import android.view.Menu;

public class MainScreenActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main_screen);
    MainRightFragment mrf = new MainRightFragment();
    RecommendedFragment rf = new RecommendedFragment();

    FragmentTransaction ft = getFragmentManager().beginTransaction();
    ft.add(R.id.main_search_boxes, mrf, "fragmentright");
    ft.add(R.id.main_left_side, rf, "fragmentreccomend");
}

}

R.id 参照は、.xml ファイル内の FrameLayout オブジェクトを指しています。「 FragmentTransaction 型のメソッド add(int, Fragment, String) は、引数 (int, RecommendedFragment, String) には適用できません」というエラー メッセージが引き続き表示されるのはなぜですか?

4

4 に答える 4

3

実行時にフラグメントを追加するには、メイン アクティビティをandroid.support.v4.app.FragmentActivityから拡張する必要があります。

また、android.app の代わりに、 android.support.v4.appパッケージのFragmentManager クラスと FragmentTransaction クラスを使用する必要があります 。

また、FragmentManager を取得するときは、メソッド getSupportFragmentManager() を使用します。以下のコードを参照してください。

FragmentManager fm = getSupportFragmentManager();

FragmentTop fragTop = new FragmentTop();
FragmentLeft fragLeft = new FragmentLeft();

FragmentTransaction ft = fm.beginTransaction();

ft.add(R.id.fragTop, fragTop);
ft.add(R.id.fragLeft, fragLeft);

ft.commit();

参照: http://developer.android.com/intl/pt-br/training/basics/fragments/fragment-ui.html

于 2015-12-12T15:43:11.247 に答える
1

これは答えというよりは降伏ですが、FragmentActivity/support.v4.app を使用して必要なものを得ることができました。上記で引用した参照が、最新の API で .add(...) 関数を使用できると述べているように見える理由は、まだわかりません。
hardha.cs と Damien はどちらも FragmentActivity を指しているため、誰かが後方互換性 API を使用する必要がある理由を説明するまで、両方の点を指摘し、回答の確認を保留します。

于 2013-10-31T15:48:19.380 に答える
0

これを試して。

FragmentManager fm = getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.add(FragmentA.this.getParent().getID(), mNewFragment,"your frame name");
ft.addToBackStack(null);
ft.commit();
于 2013-10-24T08:57:34.703 に答える