如何从Activity启动片段?

时间:2015-05-23 12:35:45

标签: android fragment android-fragmentactivity

我有一个片段:

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,因为它没有给我supportActionBar v7

那么如何致电Fragment

3 个答案:

答案 0 :(得分:6)

以下是从Activity

中调用片段的方法
The boys ____ to the store to ___ up some groceries

假设您有fragment_place代表以下内容:

SELECT * FROM "Questions" WHERE "questionText" LIKE '%_%_%'

答案 1 :(得分:0)

如果您得到

  

第二个参数类型错误。找到:“ 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;

答案 2 :(得分:-2)

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

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

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