web-dev-qa-db-ja.com

アクティビティからフラグメントを開始する方法は?

1つのフラグメントがあります。

ProductsFragments extends Fragment

と1つのアクティビティ

AdminMenuActivity extends ActionBarActivity

AdminMenuActivityからProductsFragmentsを呼び出します。私は2つのオプションを使用しました:

1)

FragmentManager fm = getSupportFragmentManager();
                for(int i = 0; i < fm.getBackStackEntryCount(); ++i) {
                    fm.popBackStack();
                }
                FragmentTransaction tx = getSupportFragmentManager().beginTransaction();
                tx.replace(R.id.frame_layout, Android.support.v4.app.Fragment.instantiate(AdminMenuActivity.this, fragments[1]));
                tx.commit();

2)

Intent intent1 = new Intent(AdminMenuActivity.this, ProductsActivity.class);
                startActivity(intent1);

どちらも失敗しています。 ProductsFragmentsをFragmentActivityで拡張したくないのは、supportedActionBar v7が得られないためです。

では、どのようにFragmentを呼び出すのですか?

6
Rudra

これは、アクティビティ内からフラグメントを呼び出す方法です

Fragment fr = new FirstFragment();
fr.setArguments(args);
FragmentManager fm = getFragmentManager();
FragmentTransaction fragmentTransaction = fm.beginTransaction();
fragmentTransaction.replace(R.id.fragment_place, fr);
fragmentTransaction.commit();

あなたがfragment_placeを持っていると仮定すると、以下を表します:

<fragment Android:name="com.company.appName.fragments.FirstFragment"
        Android:id="@+id/fragment_place"
        Android:layout_width="match_parent"
        Android:layout_height="match_parent" />
6

あなたが得ているなら

2番目の引数のタイプが間違っています。見つかった:「Android.support.v4.app.Fragment」、必須:「Android.app.Fragment」

このエラー、インポートを確認してください、以下を見つけるかもしれません、

_import Android.app.FragmentManager;
import Android.app.FragmentTransaction;
_

上記のインポートを削除します。 getFragmentManager()getSupportFragmentManager()に変更します

_FragmentManager fragmentManager=getFragmentManager(); to
FragmentManager fragmentManager=getSupportFragmentManager();
_

これでインポートできます

_import Android.support.v4.app.Fragment;
import Android.support.v4.app.FragmentManager;
_
0
sandy