Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从片段中获取FragmentManager(support.v4)_Java_Android_Android Fragments - Fatal编程技术网

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()