【发布时间】:2013-08-18 10:17:23
【问题描述】:
我想将片段添加到对话框(它可以是 DialogFragment 或常规对话框)。我该怎么做?
这是我的 DialogFragment:
public class MyDialogFragment extends DialogFragment {
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
MyDialogFragment2 dialog = new MyDialogFragment2();
View v = inflater.inflate(R.layout.news_articles, container, false);
getActivity().getSupportFragmentManager().beginTransaction().add(R.id.fragment_container, dialog).commit();
return v;
}
}
这里是 news_article.xml:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
这是我的主要活动:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
MyDialogFragment dialog = new MyDialogFragment();
dialog.show(getSupportFragmentManager(), "asdf");
}
});
}
但是当我尝试它时,我得到:
No view found for id 0x7f070002 for fragment MyDialogFragment2
我认为这是因为Activity的FragmentManager不是我应该添加的,但我找不到DialogFragment的那个,它在哪里?
【问题讨论】:
-
getChildFragmentManager().beginTransaction().... -
谢谢,但这仅适用于 API 17,不是吗?
-
原生片段是的,因为它们是从 4.2 引入的。但是您始终可以选择支持兼容性包中的片段,该包使用相同的
getChildFragmentManager()方法。 -
哦...因为旧的 v4 版本而找不到它...找到了这个:stackoverflow.com/questions/15805574/…,谢谢!
标签: android android-fragments android-dialogfragment android-nested-fragment