安卓基础(十七)
来源:互联网 发布:南风知我意全集百度云 编辑:程序博客网 时间:2024/05/08 00:37
对话框
- 对话框
- 简介
- 正文
- 扩展阅读
目标人群:没有基础的安卓初学者
知识点:DialogFragment的创建与调用
目标:在页面中显示一个含有两个按钮的对话框
简介
对话框的介绍已导入准备
DialogFragment类的简单调用
正文
1.对话框是出现在用户眼前的一个小小的窗口,用于让用户即时的做出一些操作。在3.0之后的安卓版本中,统一建议使用DialogFragment来实现,对于低版本的安卓系统来说,首先我们需要在build.gradle中添加对support V4包的引用,代码如下:
dependencies { ... compile 'com.android.support:support-v4:21.0.3' ...}
也可以在项目中选择Open Module Settings-Dependencies-点击右侧加号-Library Dependency-选中appcompat-V4来进行添加
如果为高于3.0之后的安卓版本,则不需要考虑此处
以下示例为support-v4版本
2.创建一个FragmentActivity页面,命名为MainActivity,创建两个方法来对应对话框按钮的点击事件:
public void doPositiveClick() { Log.i("FragmentAlertDialog", "Positive click!"); } public void doNegativeClick() { Log.i("FragmentAlertDialog", "Negative click!"); }
3.创建一个DialogFragment页面,命名为MyAlertDialogFragment,并实现它的onCreateDialog方法,代码如下:
import android.app.AlertDialog;import android.app.Dialog;import android.content.DialogInterface;import android.os.Bundle;import android.support.v4.app.DialogFragment;public class MyAlertDialogFragment extends DialogFragment { public static MyAlertDialogFragment newInstance(String title) { //创建一个新的对话框,并得到从调用页面传来的Title值 MyAlertDialogFragment frag = new MyAlertDialogFragment(); Bundle args = new Bundle(); args.putString("title", title); frag.setArguments(args); return frag; } @Override public Dialog onCreateDialog(Bundle savedInstanceState) { /** 得到Title值,并创建一个对话框,该对话框包含两个按钮 当两个按钮被点击时,分别调用了MainActivity页面的doPositiveClick和doNegativeClick方法 **/ String title = getArguments().getString("title"); return new AlertDialog.Builder(getActivity()) .setIcon(R.drawable.ic_launcher) .setTitle(title) .setPositiveButton("确定", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { ((MainActivity) getActivity()).doPositiveClick(); } } ) .setNegativeButton("取消", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { ((MainActivity) getActivity()).doNegativeClick(); } } ) .create(); }}
4.回到MainActivity中,使用代码来调用该DialogFragment,代码如下:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); showDialog(); } public void showDialog() { DialogFragment newFragment = MyAlertDialogFragment.newInstance("两个按钮的对话框"); newFragment.show(getSupportFragmentManager(), "alert"); }
- 当然也可以将该Fragment作为视图结构中的一员,以此来调用该DialogFragment
FragmentTransaction ft = getFragmentManager().beginTransaction();DialogFragment newFragment = MyDialogFragment.newInstance();ft.add(R.id.embedded, newFragment);ft.commit();
扩展阅读
- DialogFragment的官方API
- Dialogs的官方API
0 0
- 安卓基础(十七)
- Swift基础(十七)UITextView
- 安卓基础(一)
- 安卓基础(二)
- 安卓基础(三)
- 安卓基础(四)
- 安卓基础(五)
- 安卓基础(六)
- 安卓基础(七)
- 安卓基础(八)
- 安卓基础(九)
- 安卓基础(十)
- 安卓基础(十一)
- 安卓基础(十二)
- 安卓基础(十三)
- 安卓基础(十四)
- 安卓基础(十五)
- 安卓基础(十六)
- Apache 服务器配置及其安装
- 黑马程序员_集合学习总结:Comparable 和Comparator
- mount.md
- Android瀑布流照片墙实现,体验不规则排列的美感
- Magento提示“There has been an error processing your request”
- 安卓基础(十七)
- 恩布企业 IM iOS 客户端 0.9.7,服务端1.13发布
- Android文件下载含服务器端和登录系列的服务器端源码
- 数据库锁表的分析与解决
- 整合volley+greendao+gson,让android开发变得非常容易
- 应用打开直接是跳转到某个网页上面。
- Mysql 中怎么把输出的浮点数转换成百分比形式
- C#中StringBuilder用法以及和String的区别分析
- Spring加载resource时classpath*:与classpath:的区别