android DialogFragment使用 附例子

之前一直用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了。

效果图:

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 (本站下载)

170

3 Responses to android DialogFragment使用 附例子

  1. 张国祥说道:

    参考博主的DialogFragment的文章,终于自己动手实现了在退出时提示用户是否保存未修改的文件。感谢博主!~

  2. 南京说道:

    穷疯了吧

Leave a Reply

Name and Email Address are required fields.
Your email will not be published or shared with third parties.