我的应用程序使用多个片段来显示不同的标签。 第一个片段是带有自定义单元格的列表视图。每个单元格都有自己的一组按钮。我想在单击按钮时显示不同的片段。要知道何时单击所需按钮,我在阵列适配器中为我的列表添加了一个onclick事件。有没有办法从Array Adapter中显示新片段。到目前为止我尝试了什么,它没有奏效:
final FragmentManager fragmentManager = ((Activity)mContext)getSupportFragmentManager();
final FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
PostFragment postFr = new PostFragment();
fragmentTransaction.replace(R.id.detail_container, postFr);
fragmentTransaction.commit();
答案 0 :(得分:0)
试试这段代码:
final FragmentManager fragmentManager = ((FragmentActivity)mContext).getSupportFragmentManager();
final FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
PostFragment postFr = new PostFragment();
fragmentTransaction.replace(R.id.detail_container, postFr);
fragmentTransaction.commit();
getSupportFragmentManager
()仅针对课程FragmentActivity
定义,而不是Activity
答案 1 :(得分:0)
当你试图这样做时出了什么问题?
这是我用来转换到新片段的方法。我将它放在一个抽象的BaseActivity类中(扩展了AppCompatActivity),以便我的所有实现活动都使用该方法。
该方法获取您想要去的片段,以及一个布尔变量来指示是否将该事务添加到后台堆栈。
活动必须在其XML资源文件中声明一个FrameLayout,其id为" container"。这是片段的放置位置。
public void gotoFragment(Fragment fragment, boolean addToBackStack) {
FragmentTransaction transaction = getSupportFragmentManager()
.beginTransaction()
.replace(R.id.container, fragment);
if (addToBackStack) {
transaction.addToBackStack(null);
}
transaction.commit();
}
要从ArrayAdapter类调用此方法,请将BaseActivity的实例传递到适配器的构造函数中。
对于适配器的Context参数,从片段传递getActivity()。
如果您的所有活动类都扩展了BaseActivity类,您可以在适配器中安全地说:
public class CustomArrayAdapter extends ArrayAdapter {
private BaseActivity mActivity;
public CustomArrayAdapter(Context pContext, int pLayoutResource, List<Object> pItems) {
super(pContext, pLayoutResource);
mActivity = (BaseActivity) pContext;
}
@Override
public void onItemClick(int position) {
if (mActivity != null) {
mActivity.goToFragment(new PostFragment());
}
}