如何从Activity启动片段?

问题描述 投票:6回答:3

我有一个片段:

ProductsFragments extends Fragment

和一个活动

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);

两者都失败了。我不想用FragmentActivity扩展ProductsFragments,因为它没有给我supportActionBar v7

那我怎么称呼Fragment

android fragment android-fragmentactivity
3个回答
6
投票

以下是从Activity内部调用片段的方法

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
投票

如果你到了

错误的第二个参数类型。找到:'android.support.v4.app.Fragment',必填:'android.app.Fragment'

这个错误,检查导入,你可能会在下面找到,

import android.app.FragmentManager;
import android.app.FragmentTransaction;

删除上面的导入。改变getFragmentManager()to getSupportFragmentManager()

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

现在我们可以导入了,

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;

-2
投票

我会使用以下方法来获得所需的结果:

FragmentTransaction ft = getFragmentManager().beginTransaction();
    ft.add(YourFragment.newInstance(), null);
    ft.commit();

通过执行此操作,您将添加片段的实例。希望这可以帮助。

© www.soinside.com 2019 - 2024. All rights reserved.