<Android 基础(二十九)> Fragment (2) ~ DialogFragment
来源:互联网 发布:移动的网络电视怎么样 编辑:程序博客网 时间:2024/05/22 05:17
简介
上一篇简单的介绍了下Fragment的使用方法,这一篇主要看下DialogFragment。
在android 3.0时被引入。是一种特殊的Fragment,用于在Activity的内容之上展示一个模态的对话框。典型的用于:展示警告框,输入框,确认框等等。之前的博客中有针对AlertDialog作出过详细的介绍,这个的功能和它比较类似,但是官方推荐的必然会有其牛逼之处~
使用方法 ~ 参考Fragment
使用方法和Fragment基本相同,但是DialogFragment多出来一个onCreateDialog方法
1.创建Fragment对应的布局文件
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="250dp" android:layout_height="wrap_content" android:orientation="vertical"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:gravity="center_horizontal" android:text="MOBLIE APP" android:textColor="@color/colorAccent" android:textStyle="bold|italic" /> <android.support.design.widget.TextInputLayout android:layout_width="250dp" android:layout_height="wrap_content"> <EditText android:id="@+id/et_username" android:layout_width="match_parent" android:layout_height="match_parent" android:hint="Username" /> </android.support.design.widget.TextInputLayout> <android.support.design.widget.TextInputLayout android:layout_width="250dp" android:layout_height="wrap_content"> <EditText android:id="@+id/et_passwrod" android:layout_width="match_parent" android:layout_height="match_parent" android:hint="Password" /> </android.support.design.widget.TextInputLayout> <Button android:id="@+id/bt_login" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="登录" /></LinearLayout>
2.创建继承DialogFragment的Fragment并重写onCreateView方法
public class ContentFragment extends DialogFragment { @Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.content_fragment, container); return view; }}
3.Activity中使用
private void showRunDialog() { ContentFragment dialog = new ContentFragment(); dialog.show(getFragmentManager(), "login");//后面的字串是Tag }
4.效果
使用方法 ~ DialogFragment独有
1.创建Fragment对应的布局文件
这个布局可以和上面相同,但是为了区分效果,单独编写一个
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:gravity="center" android:text="Mobile APP" android:textColor="@color/colorAccent" android:textSize="20sp" android:textStyle="bold|italic" /> <android.support.design.widget.TextInputLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <EditText android:id="@+id/et_username" android:layout_width="match_parent" android:layout_height="match_parent" android:hint="Username" /> </android.support.design.widget.TextInputLayout> <android.support.design.widget.TextInputLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <EditText android:id="@+id/et_passwrod" android:layout_width="match_parent" android:layout_height="match_parent" android:hint="Password" /> </android.support.design.widget.TextInputLayout></LinearLayout>
2.创建继承DialogFragment的Fragment并重写onCreateDialog方法
public class DialogContent extends DialogFragment { @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) @Override public Dialog onCreateDialog(Bundle savedInstanceState) { AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); final View view = getActivity().getLayoutInflater().inflate(R.layout.content_dialog, null, false); builder.setView(view) .setPositiveButton("登录", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { final String username = ((EditText) (view.findViewById(R.id.et_username))).getText().toString(); final String password = ((EditText) (view.findViewById(R.id.et_passwrod))).getText().toString(); ((MainActivity) getActivity()).setUsernameAndPassword(username, password);//与Activity交互,也可以通过实现接口的方式实现 } }) .setNegativeButton("注册", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { final String username = ((EditText) (view.findViewById(R.id.et_username))).getText().toString(); final String password = ((EditText) (view.findViewById(R.id.et_passwrod))).getText().toString(); ((MainActivity) getActivity()).setUsernameAndPassword("注册", "注册");//与Activity交互,也可以通过实现接口的方式实现 } }); return builder.create(); }}
在onCreateDialog方法中,通过创建AlertDialog的方式来生成Dialog
3.Activity中使用方式和上面相同
4.效果
优势
屏幕旋转过程中对话框不消失
1 0
- <Android 基础(二十九)> Fragment (2) ~ DialogFragment
- Android DialogFragment(2)
- Android DialogFragment(2)
- android DialogFragment 回调到 Fragment
- 【Android Fragment】DialogFragment怎么玩?
- [Android]Fragment应用/ListFragment/DialogFragment
- <Android 基础(二十八)> Fragment (1)
- Android学习 (十九) 之Fragment
- Android学习(十九)Fragment介绍
- <Android 基础(十九)> CoordinatorLayout
- Fragment - DialogFragment
- Fragment+DialogFragment
- Java基础---什么是数组(二十九)
- Swift基础(二十九)UIToolBar
- Android编程之DialogFragment源码详解(二)
- Android编程之DialogFragment源码详解(二)
- Android基础之Fragment与Activity交互详解(二)
- Android--关于Fragment的基础介绍(二)
- [Linux C编程]TCP网络通信
- Laravel5入门Eloquent ORM总结
- 3876: [Ahoi2014]支线剧情
- 捕捉异常(2)
- springmvc中验证框架
- <Android 基础(二十九)> Fragment (2) ~ DialogFragment
- centOS6.5+jdk1.7+solr5.5.3+中文分词的安装配置
- 大数相乘和大数相加
- IntelliJ IDEA 2016.2 注册破解激活教程
- C语言
- 知识点整理----输入/输出函数
- [整理]Face sketch-photo database
- OpenGLSL-数据输入
- spring @component 详解