(本文力求该功能模块的最小系统)
理解DialogFragment:
1.它以弹出对话框的方式管理视图(View),通常情况总是由别的事件将它触发
2.常用函数:
2.1.public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState),一般要通过重载这个函数来加载我们自己的弹出框视图
2.2.int show(FragmentTransaction transaction, String tag),通常在activity中调用这个函数,用以将我们的弹出框显示出来
实现该功能的模块组成:
1.res/layout,该布局文件声明的是要弹出的对话框的显示布局,例如(fragment_dialog.xml):
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<ProgressBar
android:id="@+id/myProgressBar"
android:minWidth="300dp"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
2.java代码中通过继承DialogFragment定义自己的对话框类,该类是实现该弹出式对话框逻辑功能的主要类,例如:
public class MyDialogFragment extends DialogFragment
{
private View v;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
//return super.onCreateView(inflater, container, savedInstanceState);
v=inflater.inflate(R.layout.fragment_dialog, container, false);
return v;
}
}
3.activity中调用show()将对话框显示出来,实际项目中要合理安排弹出的时机,例如:
FragmentTransaction transaction=getSupportFragmentManager().beginTransaction();
MyDialogFragment dialog=new MyDialogFragment();
dialog.show(transaction,"dialog");
注意事项:
1.要实现兼容android3.0以前的版本,要引入v4兼容类库
2.兼容模式下,主activity继承的是FragmentActivity
3.兼容模式下,应该用getSupportFragmentManager(),而不是getFragmentManager()
本文相关资源:
1.官方文档
2.本文涉及的实例代码
PS:
如果想要实现弹出DatePicker,那么只需要将fragment_dialog.xml中的ProgressBar声明改为DatePicker即可。