Java 从片段中获取FragmentManager(support.v4)
请注意,我使用的是Java 从片段中获取FragmentManager(support.v4),java,android,android-fragments,Java,Android,Android Fragments,请注意,我使用的是android.support.v4.app.FragmentManager。我搜索了整个互联网,发现了许多类似的问题,但它们都是指android.app.FragmentManager,没有一个解决方案与support.v4 FragmentManager一起工作 import android.support.v4.app.FragmentManager; 我使用片段而不是活动来进行导航。在MainActivity中,我有一个NavigationDrawer,用于选择要使用
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进行导航时,这可以正常工作,但是片段中也有用于导航的按钮,但是不能从片段中调用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;
}
}
活动“
getSupportFragmentManager()
是片段的getFragmentManager()
将活动的方法命名为
getSupportFragmentManager()
的唯一原因是为了避免与框架getFragmentManager()
方法冲突。Fragment类中没有这样的要求。尝试getActivity().getSupp…我已经尝试过了,还有getContext().getSupp…
我得到了一个无法解决的方法错误。使用getFragmentManager()
我得到了以下错误:不兼容的类型。必需:找到android.support.v4.app.FragmentManager:android.app.FragmentManager您仍然必须在活动中使用getSupportFragmentManager()
。它在片段中使用getFragmentManager
。您的错误消息在评论中未显示-请尝试将其添加到您的问题中。我按enter键转到下一行,忘记按住shift键。我编辑了上一条带有错误消息的评论。这是您在活动中尝试使用getFragmentManager()
时遇到的错误。这不是您想要使用的。听起来您正试图使用getActivity().getFragmentManager()
?它只是片段中的getFragmentManager()
。