在一个活动中ShowInfoActivity
,用户通过单击一个按钮来弹出一个对话框:
mButtonInfo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DialogFragment infoDialog = new UpdateUserInfoDialog();
infoDialog.show(getFragmentManager(), "Update Info Dialog");
}
});
我在一个单独的文件中创建了此对话框,UpdateUserInfoDialog.java
它具有一个空的活动UpdateUserInfoActivity.java
,该活动是显示此对话框所必需的。
我有当用户在对话框完成的,要么是应该执行的另一种方法setPositiveButton
或setNegativeButton
。我无法ShowInfoActivity
在对话框类中引用。
这是对话框类的代码:
public class UpdateUserInfoDialog extends DialogFragment{
public static final String TAG = "ChangeWeightDialog";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mReg = Storage.readUserRegistration(getActivity().getApplicationContext());
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container
, Bundle savedInstanceState) {
if(getDialog() != null) {
getDialog().setCanceledOnTouchOutside(false);
}
return super.onCreateView(inflater, container, savedInstanceState);
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
final LayoutInflater inflater = getActivity().getLayoutInflater();
final View dialogView = inflater.inflate(R.layout.dialog_update_userinfo, null);
//Create dialog and stuff......
builder.setPositiveButton("update", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//Handle positive click
}
});
builder.setNegativeButton("cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//handle dnegative
dismiss();
}
});
builder.setTitle("update personal information");
builder.setView(dialogView);
return builder.create();
}
}
因此,我要寻找的是在用户单击按钮以显示活动时告诉其侦听器,以判断该活动是否已被取消或完成:
mButtonInfo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DialogFragment infoDialog = new UpdateUserInfoDialog();
//SOMETHING LIKE:
infoDialog.whenDismissed(doThisMethod());
infoDialog.show(getFragmentManager(), "Update Info Dialog");
}
});
我已经尝试过了,但是它使NullPointerOnDissmiss(new ...)
符合要求:
mButtonInfo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DialogFragment infoDialog = new UpdateUserInfoDialog();
infoDialog.onDismiss(new DialogInterface() {
@Override
public void cancel() {
showUserInformation();
}
@Override
public void dismiss() {
showUserInformation();
}
});
infoDialog.show(getFragmentManager(), "Update Info Dialog");
}
});
尽量覆盖onDismiss()在你的UpdateUserInfoDialog
。它应该广播一个Intent
通知对话框取消的自定义。您可能会Intent
在将调用您的的特定组件中发现这一点doThisMethod()
。
另外,请参阅LocalBroadcastManager以获取“本地”广播。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句