我想將一個片段添加到對話框(可以是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
我認爲這是因爲活動的FragmentManager不是我應該添加到的那個,但我找不到DialogFragment的一個,它在哪裏? 。
'getChildFragmentManager()。beginTransaction()....' – Luksprog
謝謝,但是這隻適用於API 17,不是嗎? – Kalisky
從4.2開始引入原生片段。但是您始終可以選擇支持兼容性包中的片段,該包使用相同的'getChildFragmentManager()'方法。 – Luksprog