我有一个FragmentActivity,它有一个按钮,点击按钮我正在显示一个dailog
public class FragMainActivity extends FragmentActivity implements android.view.View.OnClickListener {
Button shoBut;
public String DailogTag="dialog";
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
shoBut= (Button) findViewById(R.id.button1);
shoBut.setOnClickListener(this);
}
@Override
public void onClick(View v) {
MyDialogFragment newFragment = MyDialogFragment.newInstance();
FragmentManager fm ;
fm=getSupportFragmentManager();
newFragment.show(fm, DailogTag);
}
}
我的对话框类
public class MyDialogFragment extends DialogFragment {
static MyDialogFragment newInstance() {
return new MyDialogFragment();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View inView= inflater.inflate(R.layout.dialog_layout, container, false);
return inView;
}
}
这是我的dialog_layout xml文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:orientation="vertical"
android:paddingBottom="36dp"
android:paddingLeft="12dp"
android:paddingRight="12dp"
android:paddingTop="36dp" >
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:gravity="center"
android:text="Hi, i am the dailog BOX...Boom"
android:textAppearance="?android:textAppearanceMedium" />
</LinearLayout>
我正确地得到了dailog 但我有一个Fragment类,像这样的ExampleFragment
public class ExampleFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.frag_content, container, false);
}
}
谁的布局
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:gravity="center"
android:text="Fragment Conttent"
android:textAppearance="?android:textAppearanceMedium" />
<RatingBar
android:id="@+id/ratingBar1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
当我尝试将此片段放入我的dailog布局时,我的应用程序崩溃了。
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:gravity="center"
android:text="You really want to read this text?"
android:textAppearance="?android:textAppearanceMedium" />
android:layout_width="match_parent" android:layout_height="match_parent">
<fragment class="com.example.addfragment.ExampleFragment"
android:id="@+id/example_fragment"
android:layout_width="match_parent" android:layout_height="match_parent" />
</LinearLayout>
当我将它放在我的activity_main布局中时,它显示了片段,但是在dailogFragment中它不起作用。
我正在
08-28 15:44:09.969:E / AndroidRuntime(438):android.view.InflateException:二进制XML文件行#22:错误膨胀类片段
有人对此有任何建议吗?为什么片段不能包含在dailogFragment布局中?
为什么我们不能在daiologFragment中添加片段?
答案 0 :(得分:2)
,为什么不能包含片段 dailogFragment布局?
因为通过膨胀包含它们的布局文件,无法将嵌套片段添加到父片段。以下是文档中的说明:
注意:当布局包含&lt;时,您不能将布局扩展为片段。片段&gt;。只有在动态添加到片段时才支持嵌套片段。
对此有何建议?
在代码中添加ExampleFragment
:在对话框片段的onCreateView()
方法中创建ExampleFragment
的实例,并使用getChildFragmentManager()
将其添加到{{1}的容器中}}