请注意,我正在使用android.support.v4.app.FragmentManager
。我在互联网上搜索过,我发现了许多类似的问题,但它们都是指android.app.FragmentManager
,并且没有一个解决方案可以使用support.v4 FragmentManager。
import android.support.v4.app.FragmentManager;
我正在使用Fragments而不是Activities来进行导航。在我的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中也有用于导航的按钮,但无法从片段中调用getSupportFragmentManager()
方法。
FragmentOne:
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;
}
}
答案 0 :(得分:1)
活动' getSupportFragmentManager()
是片段getFragmentManager()
。
将Activity的方法命名为getSupportFragmentManager()
的唯一原因是避免与框架getFragmentManager()
方法冲突。 Fragment类中没有这样的要求。