安卓基础(十七)
对话框
目标人群:没有基础的安卓初学者
知识点: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();
扩展阅读
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。