之前一直用Activity中的onCreateDialog方法来创建dialog,现在在弄Android 4.0,API一直提示onCreateDialog"This method is deprecated",推荐使用DialogFragment,去Android 官网网站查了下DialogFragment的使用方法,第一个例子为了介绍style和theme,显得非常复杂,还不知道如何设置title。稍微修改了下第二个"Alert Dialog"例子,写在这里。
@Overrideprotected Dialog onCreateDialog(int id) {// TODO Auto-generated method stubreturn super.onCreateDialog(id);}

上面这个方法 deprecated了。

效果图:



DialogFragmentActivity.java (主Activity)

package com.waitingfy.android;import android.app.Activity;import android.app.Dialog;import android.app.DialogFragment;import android.app.FragmentTransaction;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class DialogFragmentActivity extends Activity {    /** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        Button btnShowDialog = (Button)findViewById(R.id.btnShowDialog);        btnShowDialog.setOnClickListener(new OnClickListener() {public void onClick(View v) {showDialog();}});    }    void showDialog() {        FragmentTransaction ft = getFragmentManager().beginTransaction();        // Create and show the dialog.        DialogFragment newFragment  = new MyDialogFragment();        Bundle args = new Bundle();        int mStackLevel = 0;        args.putInt("num", mStackLevel);        //传递参数才用到        newFragment.setArguments(args);;        newFragment.show(ft, "dialog");    }}

MyDialogFragment.java (自定义的DialogFragment)

package com.waitingfy.android;import android.app.AlertDialog;import android.app.Dialog;import android.app.DialogFragment;import android.content.DialogInterface;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;public class MyDialogFragment extends DialogFragment {    int mNum;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);    }    @Override    public Dialog onCreateDialog(Bundle savedInstanceState) {    //可以用下面的方法得到参数//      mNum = getArguments().getInt("num");    LayoutInflater mInflater = LayoutInflater.from(getActivity());    View v = mInflater.inflate(R.layout.fragment_dialog,null);        return new AlertDialog.Builder(getActivity())                .setTitle(R.string.what_do_you_like)                .setView(v)                .setPositiveButton(R.string.alert_dialog_ok,                    new DialogInterface.OnClickListener() {                        public void onClick(DialogInterface dialog, int whichButton) {                        //确定按钮do something                        }                    }                )                .setNegativeButton(R.string.alert_dialog_cancel,                    new DialogInterface.OnClickListener() {                        public void onClick(DialogInterface dialog, int whichButton) {                         //取消按钮do something                        }                    }                )                .create();    }}

其他的布局文件和strings文件这里就不列出了。可以下载整个例子后查看。

对比以前的写法,这样好像容易独立出来显示,不过最低的API要求也是11,不能兼容2.3的版本,大概很多地方用不上吧。

例子下载:

DialogFragment (本站下载)

文章源地址:http://www.waitingfy.com/?p=170


更多相关文章

  1. [Android]模仿QQ在listview上滑动出现删除键
  2. Android(安卓)-- DiskLruCache
  3. 再也不信网上流传的方法了!!android创建组件的真正写法!
  4. Android屏幕解锁和点亮
  5. 【Android开发】布局管理器-相对布局
  6. Retrofit2 ,Dagger2等常用框架注解功能介绍
  7. android开发基础学习―按钮事件
  8. android 纯代码 详细编写布局文件
  9. Android(安卓)2.2 r1 API 中文文档系列(11) —— RadioButton

随机推荐

  1. MySQL数字类型自增的坑
  2. 教你解决往mysql数据库中存入汉字报错的
  3. MySQL时间设置注意事项的深入总结
  4. MySQL创建高性能索引的全步骤
  5. 将图片保存到mysql数据库并展示在前端页
  6. MySQL的join buffer原理
  7. Mysql服务添加 iptables防火墙策略的方案
  8. MySQL数据迁移相关总结
  9. MySQL慢查询的坑
  10. 解决MySQL存储时间出现不一致的问题