碎片中的Android垂直选项卡-错误找不到方法

碎片中的Android垂直选项卡-错误找不到方法,android,tabs,fragment,android-tabhost,Android,Tabs,Fragment,Android Tabhost,我正试图在一个android项目中创建一组垂直选项卡,我已经看过很多教程和文章,但似乎无法将它们全部拼凑在一起 我用一个片段创建了一个新项目,因此我有一个main.xml和一个fragment_main.xml、一个主活动类和一个mainfragment类 main.xml <fragment xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/

我正试图在一个android项目中创建一组垂直选项卡,我已经看过很多教程和文章,但似乎无法将它们全部拼凑在一起

我用一个片段创建了一个新项目,因此我有一个main.xml和一个fragment_main.xml、一个主活动类和一个mainfragment类

main.xml

<fragment xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:id="@+id/fragment"
android:name="com.example.android.MainScreenActivityFragment"
tools:layout="@layout/fragment_main" android:layout_width="match_parent"
android:layout_height="match_parent" />
因此,我添加了tabHandler按钮,xml在fragment main类中膨胀,但按下任何选项卡按钮都会出错:

java.lang.IllegalStateException: Could not find method tabHandler(View) in a parent or ancestor Context for android:onClick attribute
我也不确定如何更新tabcontent窗格,因为所有示例似乎都使用了一个Activity,并让Activity类从TabActivity扩展而来,但使用的片段我的类已经扩展了片段


如何使它与包含选项卡的片段一起工作?

您在
android:onClick
tabHandler
)中指定的方法应该位于活动中,而不是片段中。这个答案有更多信息:

Ok为什么不能在fragment类中,因为这是定义按钮xml布局的原因?
private FragmentTabHost mTabHost;
Button patientButton, relationsButton, providersButton;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    View rootView = inflater.inflate(R.layout.fragment_main, container, false);
    mTabHost = new FragmentTabHost(getActivity());
    mTabHost.setup(getActivity(), getChildFragmentManager(), R.id.tab_btn_container);

    patientButton = (Button)rootView.findViewById(R.id.patient_tab_btn);
    relationsButton = (Button)rootView.findViewById(R.id.relations_tab_btn);
    providersButton = (Button)rootView.findViewById(R.id.providers_tab_btn);

    return rootView;
}

public void tabHandler(View target){
    Log.d(LOG_TAG, "Calling tabHandler() method");
    patientButton.setSelected(false);
    relationsButton.setSelected(false);
    providersButton.setSelected(false);

    if(target.getId() == R.id.patient_tab_btn){
        //mTabHost.setCurrentTab(0);
        patientButton.setSelected(true);
    } else if(target.getId() == R.id.relations_tab_btn){
        //mTabHost.setCurrentTab(1);
        relationsButton.setSelected(true);
    } else if(target.getId() == R.id.providers_tab_btn){
        //mTabHost.setCurrentTab(2);
        providersButton.setSelected(true);
    }
}
java.lang.IllegalStateException: Could not find method tabHandler(View) in a parent or ancestor Context for android:onClick attribute