android DialogFragment使用 附例子
16lz
2021-01-26
之前一直用Activity中的onCreateDialog方法来创建dialog,现在在弄Android 4.0,API一直提示onCreateDialog"This method is deprecated",推荐使用DialogFragment,去Android 官网网站查了下DialogFragment的使用方法,第一个例子为了介绍style和theme,显得非常复杂,还不知道如何设置title。稍微修改了下第二个"Alert Dialog"例子,写在这里。
MyDialogFragment.java (自定义的DialogFragment)
其他的布局文件和strings文件这里就不列出了。可以下载整个例子后查看。
@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
更多相关文章
- [Android]模仿QQ在listview上滑动出现删除键
- Android(安卓)-- DiskLruCache
- 再也不信网上流传的方法了!!android创建组件的真正写法!
- Android屏幕解锁和点亮
- 【Android开发】布局管理器-相对布局
- Retrofit2 ,Dagger2等常用框架注解功能介绍
- android开发基础学习―按钮事件
- android 纯代码 详细编写布局文件
- Android(安卓)2.2 r1 API 中文文档系列(11) —— RadioButton