Добавление фрагмента в диалоговое окно
Я хотел бы добавить фрагмент в диалог (это может быть либо 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, где она?
2 ответов
ответ (благодаря @Luksprog) использует getChildFragmentManager вместо getActivity ().getSupportFragmentManager
Он был недоступен для меня, потому что мне пришлось обновить мою поддержку-V4 jar, как описано здесь:android.поддержка.В4.приложение.Фрагмент: неопределенный метод getChildFragmentManager ()
макет для диалога-R. макет.view_with_plus
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.util.me.TestActivity"
>
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Details"/>
<fragment
android:layout_toRightOf="@+id/text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/email"
class="com.util.me.test.PlusOneFragment"
android:layout_centerHorizontal="true"/>
</RelativeLayout>
Как показать диалог
public void showDialog(View vIew){
AlertDialog.Builder builder = new AlertDialog.Builder(this);
View view = this.getLayoutInflater().inflate(R.layout.view_with_plus, null);
builder.setView(view)
.setPositiveButton("OK", null)
.setNegativeButton("Cancel", null);
AlertDialog dialog = builder.create();
dialog.show();
}
фрагмент в классе= " com.утиль.меня.тест.PlusOneFragment " - это просто PlusOneFragment, созданный Android Studio.