0

ナビゲーションドロワーを実装しようとしています。"Fragment1" はリスト フラグメントです。

public class Fragment1 extends ListFragment {
private List<String> musicList;

public static ListFragment newInstance(Context context) {
    Fragment1 f = new Fragment1();

    return f;
}

ただし、fragmenttransaction を使用してメイン アクティビティのフラグメントを置き換えることはできません。

public class MainActivity extends AbstractNavDrawerActivity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if ( savedInstanceState == null ) {
        getSupportFragmentManager().beginTransaction().replace(R.id.content_frame, new Fragment1()).commit();
    }
}


@Override
protected void onNavItemSelected(int id) {
    switch ((int)id) {
    case 101:
        getSupportFragmentManager().beginTransaction().replace(R.id.content_frame, new Fragment1()).commit();
        break;
    case 102:
        getSupportFragmentManager().beginTransaction().replace(R.id.content_frame, new Fragment2()).commit();
        break;
    }
}

}

replace メソッドにはその下に赤線があり、次のように述べています。

FragmentTransaction 型のメソッド replace(int, Fragment) は、引数 (int, Fragment1) には適用できません"

私は何をすべきか?

4

1 に答える 1

1
getActivity().getSupportFragmentManager().beginTransaction().replace(R.id.content_frame,     new Fragment1()).commit();

IMO メソッド コードの後に​​メソッド呼び出しを含むような長いコードを作成することは避けてください。多分試してください:

FragmentTransaction transaction = getActivity().getSupportFragmentManager()
                    .beginTransaction();
Fragment newFragment = new Fragment1();
transaction.add(R.id.content_frame, newFragment);
transaction.addToBackStack(null);
transaction.commit();
于 2013-08-12T11:34:21.460 に答える