Java 通过单击按钮更改片段

Java 通过单击按钮更改片段,java,android,android-fragments,android-activity,fragment,Java,Android,Android Fragments,Android Activity,Fragment,我必须创建一种视图,它包含由“下一步按钮”选择的几个片段。我有一个名为FragmentSearch的片段,其中包含一个按钮,当我单击按钮时,我想转到下一个片段,FragmentBoxOffice,但我不知道如何才能做到这一点。 我试着用充气器充气。在按钮的设置中充气。但这似乎不起作用。我还尝试在单个片段中创建所有内容,使用setVisibity对视图进行某种更改,但这也不起作用 公共类FragmentSearch扩展了片段实现SortListener{ ... @凌驾 CreateView上的公

我必须创建一种视图,它包含由“下一步按钮”选择的几个片段。我有一个名为FragmentSearch的片段,其中包含一个按钮,当我单击按钮时,我想转到下一个片段,FragmentBoxOffice,但我不知道如何才能做到这一点。 我试着用充气器充气。在按钮的设置中充气。但这似乎不起作用。我还尝试在单个片段中创建所有内容,使用setVisibity对视图进行某种更改,但这也不起作用

公共类FragmentSearch扩展了片段实现SortListener{
...
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
视图=充气机。充气(碎片搜索,容器,错误);
Button=(Button)view.findViewById(R.id.Button);
但是.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
myView=充气机。充气(碎片箱、集装箱、假);
}
});
返回充气机。充气(R.layout.fragment\u搜索,容器,错误);
}
XML文件:



如何执行此操作?

显示片段的唯一正确方法是使用
FragmentManager
FragmentTransaction
。将
onClick()
替换为:

public void onClick(View v) {
    FragmentManager fm = getFragmentManager();  
    FragmentBoxOffice f = (FragmentBoxOffice) fm.findFragmentByTag(FragmentBoxOffice.TAG);
    if (f == null) {
      f = new FragmentBoxOffice();
      fm.beginTransaction()
        .replace(R.id.fragment_container, f, FragmentBoxOffice.TAG)
        //.addToBackStack(null);  // uncomment this line if you want to be able to return to the prev. fragment with "back" button
        .commit();
    }
}
然后在活动布局中,您需要一个名为
fragment\u container
的占位符
ViewGroup
,它将是片段布局的父级:



两个片段都应该有自己的布局,这些布局放在活动布局中的片段容器中。

是否要使用相同的按钮从一个片段切换到另一个片段?否,每个片段都有一个按钮,用于导航到下一个或上一个片段。在这种情况下,您可能会访问本应在最后一个片段而不是下一个片段中,最好的解决方案是滚动标签。你也会得到更好的效果,你的代码也会可读。问题是,该片段仍然在滚动标签中。我不能在另一个标签中添加第二个滚动标签。我必须制作一种提问,让用户回答一些问题在这个片段中,然后在可滚动选项卡中的另一个片段上滚动避免在其他选项卡中嵌套选项卡,Google不鼓励这种模式。请阅读以下内容FragmentBoxOffice中的.TAG属性是什么?只是FragmentManager保留的任意字符串,作为每个片段的映射键。您可以在findFragmentByTag()中看到这一点你可以用这个标签搜索。ps。唯一的要求是每个片段有不同的标签值。好的,我试过了,但问题是“FragmentTransaction ft”必须是一个int值,但它仍然不起作用。当我单击按钮时,似乎什么都没有发生><谢谢帮助..我尝试了大约3个小时。对不起,我是盲目编写代码的。忽略commit的返回值。你不需要它。我修复了我的答案。好的,问题是片段无法识别按钮单击。我不需要ried将onClickListener添加到按钮或片段,但片段无法识别事件。
<FrameLayout
    android:id="@+id/fragment_container"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1" />