AUF法则下的对话框
【楔子】 在Actiity页面上做DiaLog似乎非常简单,大部分在学习了控件以后都会使用,但是google希望开发者只使用FragementDialog,刚开始不理解,后来发现碎片对话框真的太好用了,完全就是自我定制,其实就是设计一个xml布局,然后将它显示为对话框,这种自由形的对话框自然要比Activity本身的要好上很多。
【DialogFragment基础知识】想要做碎片的对话框,需要了解DialogFragment类,这个类继承自Fragment,所以行为相似。
【实现效果】:在一个fragment里面点击岛计时,跳出对话框
【第一步建立DialogFragment】
首先如同Fragment一样建立dialog.xml文件
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/LinearLayout1" android:layout_width="wrap_content" android:layout_height="match_parent" android:gravity="center" android:orientation="vertical" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="110dp" android:textSize="30dp" android:text="时" /> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="45dp" android:textSize="30dp" android:text="分" /> </LinearLayout> <TimePicker android:id="@+id/mytime" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <Button android:id="@+id/timesure" android:layout_width="200dp" android:layout_height="wrap_content" android:background="#33A18F" android:textColor="#FFFFFF" android:layout_marginBottom="20dp" android:text="确定" /> </LinearLayout>
接下来就是DialogFragment类:
package com.example.testdrawerlayoutleft; import android.app.Activity; import android.app.DialogFragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.view.Window; import android.widget.Button; import android.widget.TimePicker; import android.widget.TimePicker.OnTimeChangedListener; import android.widget.Toast; public class TimeDialog extends DialogFragment{ private TimePicker mytime=null; private Button timesubmit; public int hour; public int minute; public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { getDialog().setTitle("倒计时"); View view=inflater.inflate(R.layout.dialog, container); mytime=(TimePicker)view.findViewById(R.id.mytime); timesubmit=(Button)view.findViewById(R.id.timesure); timesubmit.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub OnFragmentListener listener=(OnFragmentListener)getActivity(); listener.onFragmentListener(hour, minute); getDialog().dismiss(); } }); mytime.setIs24HourView(true); mytime.setCurrentHour(13); mytime.setCurrentMinute(14); mytime.setOnTimeChangedListener(new OnTimeChangedListener() { @Override public void onTimeChanged(TimePicker view, int hourOfDay, int minute1) { // TODO Auto-generated method stub hour=hourOfDay; minute=minute1; Toast.makeText(getActivity(), hour+" "+minute, 100).show(); } }); return view; } }
关键代码:
public class TimeDialog extends DialogFragment
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
【点击事件中的Fragment处理】:
监听radiobutton事件:
countdown.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { // TODO Auto-generated method stub main.showDialog("dialog"); } });
其中main就是主Activity,获取方式如下:
Main main = (Main) getActivity();
管理对话框显示方式还是写在主Activity里面:
public void showDialog(String tag){ TimeDialog dialog=new TimeDialog(); dialog.show(getFragmentManager(), tag); }
这里就全部完成了,是不是比较简单?
碎片对话框显示方式有两种
1.public int show(FragmentTransaction transaction ,String tag)
2.public int show(Fragment manager, String tag)
区别是第一个进入事务中,同时进入返回栈
第二个只是获得一个事务进行显示。
碎片对话框的好处是:即使设备发生旋转,碎片管理器会执行基本的状态管理,我们不需要做任何的状态管理,对话框就会重建。
相关推荐
创建DialogFragment的步骤通常包括以下几点: 1. **创建自定义DialogFragment类**: 首先,你需要创建一个继承自DialogFragment的子类。在这个子类中,你可以重写一些关键方法来定制对话框的行为,比如`...
DialogFragment对话框是Android开发中的一个关键组件,它在应用程序中用于显示临时的、轻量级的用户交互界面。在Android 3.0(API级别11)引入,DialogFragment结合了Fragment的功能与Dialog的功能,使得在处理...
在Activity中,可以通过`newInstance()`静态方法创建DialogFragment实例,然后调用`show()`方法来显示对话框: ```java CustomDialogFragment dialogFragment = CustomDialogFragment.newInstance(); ...
在给定的标题“用fragment做成的对话框”中,开发者利用Fragment创建了一个自定义的对话框视图,这通常是出于对系统默认Dialog样式的不满意或需要更灵活的定制需求。 传统的Android Dialog是系统提供的弹出式窗口,...
2. **创建DialogFragment** - 创建一个新的Fragment类,让它继承自DialogFragment。在该类中,重写`onCreateDialog()`方法,此方法用于创建并返回Dialog实例。例如: ```java public class MyDialogFragment ...
public void onClick...以上就是使用DialogFragment在Android开发中创建对话框的方法,这种实现方式既简洁又灵活,能够满足大部分对话框的需求。通过自定义`onCreateDialog`,还可以实现更复杂的对话框布局和功能。
1. **创建DialogFragment** 创建一个新的Java类,让它继承`DialogFragment`。在这个类中,你需要重写`onCreateDialog()`方法,该方法用于构建对话框实例。在这里,你可以设置对话框的样式、主题、内容和按钮。 2. ...
`DialogFragment`是Android提供的一个类,它扩展了`Fragment`,并添加了对话框样式的特性。在这个场景中,我们将讨论如何在`DialogFragment`内集成`TabLayout`和`ViewPager`,以实现多页面的左右滑动切换效果,类似...
在Android开发中,DialogFragment是一种非常重要的组件,它结合了Fragment和对话框的功能,使得开发者可以在应用程序中创建具有丰富交互性的对话框。本教程通过一个名为"DialogFragmentDemo"的示例项目,深入探讨...
在Android开发中,...通过实例,我们了解了如何定义布局,创建DialogFragment子类,显示对话框以及处理用户交互。在实际项目中,可以根据需求进一步定制对话框的行为和样式,使其更好地适应应用程序的风格和功能。
DialogFragment在android 3.0时被引入。是一种特殊的Fragment。在DialogFragment产生之前,我们创建对话框:一般采用AlertDialog和Dialog。注:官方不推荐直接使用Dialog创建对话框。
在Android应用开发中,"碎片"(Fragment)和"对话框碎片"(DialogFragment)是两个重要的组件,它们主要用于构建动态、可复用且适应不同屏幕尺寸的应用界面。以下是这两个概念的详细说明。 **碎片(Fragment)** ...
通过继承`DialogFragment`,我们可以方便地创建具有标准对话框外观的弹出窗口,并且能像处理普通`Fragment`一样管理它的生命周期。在`DialogFragment`中,我们可以通过重写`onCreateDialog()`方法来自定义对话框的...
总之,DialogFragment是Android开发中创建对话框的推荐方式,它结合了Fragment和Dialog的优点,提供了一种更为灵活和健壮的解决方案。了解和掌握DialogFragment的使用,能够帮助开发者更好地构建用户界面,提高应用...
2. 创建DialogFragment:对话框通常在Fragment中创建和管理,特别是当需要与Activity交互时。 3. 实现清单对话框:通过设置Adapter将数据源绑定到DialogFragment的ListView上,如ArrayAdapter或CursorAdapter。 4. ...
`DialogFragment`是Android SDK提供的一种可以作为对话框显示的Fragment,它具有Fragment的所有功能,同时又具备对话框的特性。 首先,我们需要了解`DialogFragment`的基本用法。在创建`DialogFragment`时,我们...
在Android应用开发中,`DialogFragment`是用于展示对话框的类,它是`Fragment`的一个子类,集成了对话框的功能。`DialogFragment`提供了更易于管理、灵活且可定制化的对话框解决方案。在这个“dialogfragmentdemo”...
`DialogFragment`是Android的一种对话框组件,它可以浮动在其他UI之上,提供用户交互。而在React Native中,我们可以使用第三方库来模拟这种效果。本篇文章将深入探讨如何在React Native中创建一个类似于Android `...