如何从Activity启动Fragment?

9
我有一个片段:

我有一个片段:

ProductsFragments extends Fragment

和一个活动

AdminMenuActivity extends ActionBarActivity

我希望从AdminMenuActivity调用ProductsFragments。我尝试了两种方法:
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);

两者都失败了。我不想使用FragmentActivity扩展ProductsFragments,因为它不能给我支持的ActionBar v7。
那么我如何调用Fragment?
2个回答

8

以下是如何在Activity中调用一个fragment:

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" />

0
如果你遇到以下错误:

Wrong 2nd argument type. Found: 'android.support.v4.app.Fragment', required: '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;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接