我试图使用DialogFragment.getDialog()获取我使用扩展DialogFragment创建的Dialog,但它返回null.
基本上我想从FragmentActivity改变布局中的文本,FragmentActivity创建并显示DialogFragment.
Pet*_*tai 76
你getDialog()在DialogFragmen'ts生命周期中过早地打电话.
getDialog()只需mDialog从DialogFragment 返回私有变量.
实例化DialogFragment时为mDialognull,然后在onCreateDialog内部触发时设置它getLayoutInflater(Bundle savedInstanceState),因此您必须在getDialog之后调用onCreateDialog.
例如,一些所谓的常用方法的顺序是onCreate,onCreateDialog和onCreateView,onStart.所以,你可以打电话给getDialog它,让它返回onCreateView或者onStart,onCreate或者不是或onCreateDialog.
虽然onStart调用了eventhough called when the Fragment is visible to the user,但在那一点上调整片段的布局看起来很好......例如,设置宽度和高度使用getDialog().getWindow().setLayout(..., ...);不会使片段看起来改变大小,但只是看起来有新设置的大小.
Gon*_*alo 57
尝试从可用的FragmentManager调用executePendingTransactions().
dialogFragment = new DialogFragment();
...
dialogFragment.show(mFragmentActivity.getSupportFragmentManager(), "Dialog");
mFragmentActivity.getSupportFragmentManager().executePendingTransactions();
Dialog d = dialogFragment.getDialog()
...
Run Code Online (Sandbox Code Playgroud)
有两种显示DialogFragment的方法:
void showDialog() {
// Create the fragment and show it as a dialog.
DialogFragment newFragment = MyDialogFragment.newInstance();
newFragment.show(getFragmentManager(), "dialog");
}
Run Code Online (Sandbox Code Playgroud)
和
FragmentTransaction ft = getFragmentManager().beginTransaction();
DialogFragment newFragment = MyDialogFragment.newInstance();
ft.add(R.id.embedded, newFragment);
ft.commit();
Run Code Online (Sandbox Code Playgroud)
使用第一种方法时,只能获得一个nonNull对话框.
| 归档时间: |
|
| 查看次数: |
23233 次 |
| 最近记录: |