嘿伙计们,我知道这是一个非常愚蠢的问题,但我在最近几天面对这个问题
这是我的点击事件
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Fragment newCase = new NewCase();
FragmentTransaction transaction = getFragmentManager().beginTransaction();
// What to put in the ? marked argument?
//What is fragment container id?
transaction.replace(?, newCase );
transaction.addToBackStack(null);
transaction.commit();
}
});
这是我的片段类
public class NewCase extends Fragment {}
现在让我知道如何在android中用xml视图打开片段类?
提前致谢
答案 0 :(得分:2)
在activity_layout.xml
中,您应添加linearLayout
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
</LinearLayout>
其余部分取决于你的代码
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view){
Fragment newCase=new NewCase();
FragmentTransaction transaction=getFragmentManager().beginTransaction();
transaction.replace(R.id.fragment_container,newCase); // give your fragment container id in first parameter
transaction.addToBackStack(null); // if written, this transaction will be added to backstack
transaction.commit();
}
});
注意 xml中的Layout
ID和容器ID相同
答案 1 :(得分:1)
当你要显示片段不是活动时,对吧?那你为什么要用startActivity()
。
你可以尝试一下
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view){
Fragment newCase=new NewCase();
FragmentTransaction transaction=getFragmentManager().beginTransaction();
transaction.replace(R.id.your_fragment_container,newCase); // give your fragment container id in first parameter
transaction.addToBackStack(null); // if written, this transaction will be added to backstack
transaction.commit();
}
});
此处R.id.your_fragment_container
将替换为您要放置片段的布局的ID。
例如 - 的 activity_main.xml中强>
<FrameLayout
android:id="@+id/frag_container"
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="wrap_content">
</FrameLayout>
然后你将使用
transaction.replace(R.id.frag_container,newCase);