【发布时间】:2018-08-22 07:22:38
【问题描述】:
请注意,我使用的是android.support.v4.app.FragmentManager。我在互联网上搜索了很多类似的问题,但它们都指的是android.app.FragmentManager,并且没有一个解决方案适用于support.v4 FragmentManager。
import android.support.v4.app.FragmentManager;
我使用片段而不是活动来进行导航。在我的 MainActivity 中,我有一个 NavigationDrawer,用于使用以下方法选择要显示的片段:
public boolean onNavigationSelected(MenuItem item) {
FragmentManager fragManager = getSupportFragmentManager();
if(item.getItemId() == R.id.fragment_one) {
fragManager.beginTransaction().replace(R.id.content, new FragmentOne()).commit()
}
if(item.getItemId() == R.id.fragment_two) {
fragManager.beginTransaction().replace(R.id.content, new FragmentTwo()).commit()
}
}
当用户使用 NavigationDrawer 导航时,这可以正常工作,但 Fragment 中也有用于导航的按钮,但是不能从 Fragment 中调用 getSupportFragmentManager() 方法。
片段一:
public class FragmentOne extends Fragment {
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
// Inflate the layout for the Fragment
fragment = inflater.inflate(R.layout.fragment_one_layout, container, false);
// Do some stuff to the fragment before returning it
Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// This does not work
------------> FragmentManager fragManager = getSupportFragmentManager();
fragManager.beginTransaction().replace(R.id.content, new FragmentTwo()).commit();
}
});
return fragment;
}
}
【问题讨论】:
-
试试 getActivity().getSupp...
-
我试过了,连同
getContext().getSupp...我得到一个无法解决方法错误。
标签: java android android-fragments