使用DialogFragment创建对话框总结

本文详细介绍了如何在Android中通过DialogFragment自定义对话框界面,并实现参数传递。包括创建DialogFragment、定义Interface、在按钮回调中调用Interface中定义的函数,以及如何在Activity中实现这些函数。同时,提供了两种实现自定义Dialog界面的方法,一种是使用局部变量,另一种是声明成员变量。此外,还讨论了如何在创建Dialog时传入视图,以及如何在Activity中接收并处理DialogFragment传递过来的参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

回调Activity中的函数

http://developer.android.com/guide/topics/ui/dialogs.html#PassingEvents

在DialogFragment中,定义Interface,然后在onAttach中绑定,最后在每个按钮的回调函数中调用Interface中定义的函数

在Activity中,实现Interface中定义的函数

Interface中定义的函数参数可以任意指定,因此可以用来在从DialogFragment向Activity传递参数

http://developer.android.com/reference/android/app/DialogFragment.html#AlertDialog

在DialogFragment中,直接在每个按钮的回调函数中调用Interface中定义的函数

在Activity中,实现Interface中定义的函数

Interface中定义的函数参数可以任意指定,因此可以用来在从DialogFragment向Activity传递参数

 

自定义Dialog界面,传递参数到Activity

使用OnCreateDialog()

第一种方法:

局部变量view需要声明为final

public class AllBonusDialogFragment extends DialogFragment {
public Dialog onCreateDialog(Bundle savedInstanceState) { AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); LayoutInflater inflater = getActivity().getLayoutInflater(); final View view = inflater.inflate(R.layout.input_dialog, null); builder.setView(view) .setPositiveButton("确定", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { EditText allBonusEdit = (EditText)view.findViewById(R.id.inputDialogEdit); String allBonusStr = allBonusEdit.getText().toString(); double allBonus = Double.parseDouble(allBonusStr); mListener.onDialogPositiveClick(allBonus); } }) .setNegativeButton("取消", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { mListener.onDialogNegativeClick(); } }); return builder.create(); }

第二种方法:

把view声明为成员变量

public class AllBonusDialogFragment extends DialogFragment {
    View view = null;
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        LayoutInflater inflater = getActivity().getLayoutInflater();
        view = inflater.inflate(R.layout.input_dialog, null);
        builder.setView(view)
               .setPositiveButton("确定", new PositiveOnClickListener())
               .setNegativeButton("取消", new NegativeOnClickListener());
        return builder.create();
    }
    
    class PositiveOnClickListener implements DialogInterface.OnClickListener {
	@Override
	public void onClick(DialogInterface dialog, int which) {
	    EditText allBonusEdit = (EditText)view.findViewById(R.id.inputDialogEdit);
            String allBonusStr = allBonusEdit.getText().toString();
            double allBonus = Double.parseDouble(allBonusStr);
            mListener.onDialogPositiveClick(allBonus);
        }
    }
    
    class NegativeOnClickListener implements DialogInterface.OnClickListener {
	@Override
	public void onClick(DialogInterface dialog, int which) {
	    mListener.onDialogNegativeClick();
        }
    }

使用OnCreateView()

《Pro Android 4》Chapter 9:Working With Dialogs

http://blog.youkuaiyun.com/flowingflying/article/details/13505409

 

转载于:https://www.cnblogs.com/scige/p/3455327.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值