android dialogfragment style,android DialogFragment使用 附例子

本文探讨了如何在Android 4.0及以上版本中弃用Activity的onCreateDialog方法,转而使用DialogFragment。作者分享了DialogFragment的基本使用方法,包括自定义DialogFragment示例,并讨论了兼容性和API要求的变化。

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

之前一直用Activity中的onCreateDialog方法来创建dialog,现在在弄Android 4.0,API一直提示onCreateDialog“This method is deprecated“,推荐使用DialogFragment,去Android 官网网站查了下DialogFragment的使用方法,第一个例子为了介绍style和theme,显得非常复杂,还不知道如何设置title。稍微修改了下第二个”Alert Dialog”例子,写在这里。@Override

protected Dialog onCreateDialog(int id) {

// TODO Auto-generated method stub

return super.onCreateDialog(id);

}

上面这个方法 deprecated了。

效果图:

e9d24b9afdb9cd87982df12af9cce748.png

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的版本,大概很多地方用不上吧。

例子下载:

Post Views: 1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值