jon*_*nrz 5 android view dialogfragment
我有一个从DialogFragment派生的自定义对话框.
当用户单击确定按钮时,我需要保存屏幕上的信息.
所以我使我的PositiveButton调用dismiss并且我实现了onDismiss方法来保存数据.
在onDismiss方法中,我需要从Dialog上的editView获取数据.我使用getView().findViewByID得到EditView中,但该方法GetView()返回null.
这是我的代码:
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
LayoutInflater inflater = getActivity().getLayoutInflater();
builder.setView(inflater.inflate(R.layout.dialog_signin, null))
.setPositiveButton(R.string.signin, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
LoginDialogFragment.this.getDialog().dismiss();
}
})
.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
LoginDialogFragment.this.getDialog().cancel();
}
});
return builder.create();
}
@override
public void onDismiss(){
EditView view = (EditView)getView().findViewByID(R.id.edit);
}
Run Code Online (Sandbox Code Playgroud)
我知道我可以将OnCreateDialog中膨胀的视图保存为属性,但这对我来说似乎不对.
如何在onDismiss中从屏幕上获取视图的正确方法?
Ps:我工作的地方不允许我发布我的代码,因此我从谷歌中获取了代码并将其更改为尽可能接近我的代码.
旧而金。这允许对整个片段有更大的控制(例如,当实现seekBar或使用ButterKnife时)。说够了:
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
LayoutInflater inflater = getActivity().getLayoutInflater();
View view = inflater.inflate(R.layout.dialog_signin, null);
// do your stuff with views here
builder.setView(view)
.setPositiveButton(R.string.signin, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
LoginDialogFragment.this.getDialog().dismiss();
}
})
.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
LoginDialogFragment.this.getDialog().cancel();
}
});
return builder.create();
}
Run Code Online (Sandbox Code Playgroud)
我知道我可以将 OnCreateDialog 中膨胀的视图保存为属性,但这对我来说似乎不正确。
是的,就是那个。不过,它看起来是正确的,尤其是在实现诸如eekBar之类的东西以及使用诸如ButterKnife之类的库时。
| 归档时间: |
|
| 查看次数: |
5562 次 |
| 最近记录: |