gpt4 book ai didi

android - getView 的 DialogFragment 在 onDismiss 上返回 null

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:32:39 24 4
gpt4 key购买 nike

我有一个派生自 DialogFragment 的自定义对话框。

当用户点击确定按钮时,我需要保存屏幕上的信息。

所以我关闭了 PositiveButton 调用并实现了 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);
}

我知道我可以将 OnCreateDialog 中膨胀的 View 保存为一个属性,但我觉得这不合适。

如何在 onDismiss 中从屏幕上获取 View 的正确方法?

Ps: 我工作的地方不允许我发布我的代码,所以我从谷歌上拿了一个代码,我把它改得尽可能接近我的代码。

最佳答案

旧但金。这允许对整个 fragment 有更大的控制(例如,在实现 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();
}

I know I can save the view inflated in the OnCreateDialog as a attribute, but that doesn't seems right to me.

是的,就是这个。不过它看起来不错,尤其是在实现 seekBar 之类的东西以及使用 ButterKnife 之类的库时。

关于android - getView 的 DialogFragment 在 onDismiss 上返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16701131/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com