博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android DialogFragment使用
阅读量:6038 次
发布时间:2019-06-20

本文共 3974 字,大约阅读时间需要 13 分钟。

1. 简单使用

  • 继承DialogFragment
/** * 显示系统的对话框Fragment * @author mazaiting * @date 2018/3/1 */public class CustomDialogFragment extends DialogFragment implements DialogInterface.OnClickListener{    private static final String TAG = "CustomDialogFragment";    @NonNull    @Override    public Dialog onCreateDialog(Bundle savedInstanceState) {        AlertDialog.Builder builder =                new AlertDialog.Builder(getActivity())                .setTitle("标题")                .setMessage("消息")                .setPositiveButton("确定", this)                .setNegativeButton("取消", this)                .setCancelable(false);        // 这里不能调用show方法        return builder.create();    }    @Override    public void onClick(DialogInterface dialog, int which) {        switch (which) {            case DialogInterface.BUTTON_NEGATIVE:                Toast.makeText(getActivity(), "取消", Toast.LENGTH_SHORT).show();                break;            case DialogInterface.BUTTON_POSITIVE:                Toast.makeText(getActivity(), "确定", Toast.LENGTH_SHORT).show();                break;            default:                break;        }    }}
  • 使用
new CustomDialogFragment().show(getSupportFragmentManager(), "custom");

2. 自定义View的DialogFragment

  • 继承Fragment
public class ViewDialogFragment extends DialogFragment {    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE);        return inflater.inflate(R.layout.dialog, container, false);    }}
  • 布局dialog.xml
  • 使用
new ViewDialogFragment().show(getSupportFragmentManager(), "view");

3. 接口通信

  • 接口
/** * 接口通信 * @author mazaiting * @date 2018/3/1 */public interface DataCallback {    /**     * 获取数据     * @param data 数据     */    void getData(String data);}
  • 继承DialogFragment
/** * 接口通信 * * @author mazaiting * @date 2018/3/1 */public class DataDialogFragment extends DialogFragment implements DialogInterface.OnClickListener {    @NonNull    @Override    public Dialog onCreateDialog(Bundle savedInstanceState) {        AlertDialog.Builder builder =                new AlertDialog.Builder(getActivity())                        .setTitle("标题")                        .setMessage("消息")                        .setPositiveButton("确定", this)                        .setNegativeButton("取消", this)                        .setCancelable(false);        return builder.create();    }    @Override    public void onClick(DialogInterface dialog, int which) {        DataCallback callback = (DataCallback) getActivity();        switch (which) {            case DialogInterface.BUTTON_NEGATIVE:                callback.getData("取消");                break;            case DialogInterface.BUTTON_POSITIVE:                callback.getData("确定");                break;            default:                break;        }    }}
  • 使用
public class MainActivity extends AppCompatActivity implements DataCallback{    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        ButterKnife.inject(this);    }    @OnClick({R.id.btn_custom, R.id.btn_view, R.id.btn_get_data})    public void onViewClicked(View view) {        switch (view.getId()) {            case R.id.btn_custom:                new CustomDialogFragment().show(getSupportFragmentManager(), "custom");                break;            case R.id.btn_view:                new ViewDialogFragment().show(getSupportFragmentManager(), "view");                break;            case R.id.btn_get_data:                new DataDialogFragment().show(getSupportFragmentManager(), "data");                break;            default:                break;        }    }    @Override    public void getData(String data) {        Toast.makeText(this, data, Toast.LENGTH_SHORT).show();    }}

转载地址:http://tolhx.baihongyu.com/

你可能感兴趣的文章
Sym System Recovery 2013 ( 備份 操作 )
查看>>
学习jquery mobile
查看>>
如果你写PHP, 请多注意自己是否有良好的习惯
查看>>
罗森伯格成功部署印度某著名港口光纤基础设施
查看>>
How to Setup Apache encrypt SSL on Ubuntu 18.04
查看>>
集线器、路由器、交换机、第三层交换技术
查看>>
【Java集合源码剖析】ArrayList源码剖析
查看>>
我的友情链接
查看>>
关于jfreechart中文标题乱码的解决 /usr/share/fonts/truetype/ /usr/share/fonts/truetype/
查看>>
网页的学习语言将仿佛使你生活更动人
查看>>
C++静态变量内存分配,编译阶段,解密
查看>>
Gartner:XenServer你是领导者!
查看>>
我的友情链接
查看>>
专业程序员必知必会的技巧:驯服复杂代码
查看>>
android ndk cmake Invalid Android ABI
查看>>
centos 配置双机ssh信任
查看>>
nginx配置.htaccess伪静态
查看>>
如何用标签打印软件制作物料标识卡
查看>>
雷林鹏分享:二级目录配置CI应用
查看>>
雷林鹏分享:CodeIgniter 防止跨站请求伪造攻击
查看>>