• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > 《Android权威编程指南(The Big Nerd Ranch Guide)(第二版)》12.4挑战练习,bignerdranch

《Android权威编程指南(The Big Nerd Ranch Guide)(第二版)》12.4挑战练习,bignerdranch

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了《Android权威编程指南(The Big Nerd Ranch Guide)(第二版)》12.4挑战练习,bignerdranch等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

《Android权威编程指南(The Big Nerd Ranch Guide)(第二版)》12.4挑战练习,bignerdranch


本书第12章是讲解Dialog。12.4挑战练习是在CriminalIntent项目中,再增加一个TimePickerFragment的对话框fragment。通过在CrimeFragment用户界面上添加的时间按钮,
弹出TimePickerFragment界面,允许用户使用TimePicker组件选择crime发生的具体时间。

 

我的修改思路是:

 

具体实现如下。请各位高手拍砖。

 

1、使用AppCompat兼容库

依据DatePickerFragment实现方式,仍使用AppCompat兼容库。它在实现DatePickerFragment时,已经添加到CriminalIntent项目中。

 

2、增加、更新资源文件

2.1)增加标题:“Time of crime:”

在项目中,res\values\strings.xml增加 <string name="time_picker_title">Time of crime:</string>

即:

1 <resources>
2     ... ...
3     
4     <string name="time_picker_title">Time of crime:</string>
5 </resources>

 

2.2)在CrimFragment界面上添加Time Button

在CrimFragment界面上显示Time Button,需要在项目中res\layout\fragment_crime.xml文件,增加下列代码:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout
 3     ... ...
 4 
 5     <Button
 6         ... ...
 7         />
 8 
 9     <Button
10         android:id="@+id/crime_time"
11         android:layout_width="match_parent"
12         android:layout_height="wrap_content"
13         android:layout_marginLeft="16dp"
14         android:layout_marginRight="16dp"
15         />
16 
17     <CheckBox
18         ... ...
19         />
20 
21 </LinearLayout>

 

2.3)为了保证设备旋转后仍然能正常显示

还需在项目的res\layout-land\fragment_crime.xml文件增加类似上面代码:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout
 3     ... ...
 4 
 5         <Button
 6             ... ...
 7             />
 8 
 9         <Button
10             android:id="@+id/crime_time"
11             android:layout_width="wrap_content"
12             android:layout_height="wrap_content"
13             android:layout_weight="1"/>
14 
15         <CheckBox
16             ... ...
17             />
18 
19     ... ...
20 
21 </LinearLayout>

 

3、创建新的TimePickerFragment

TimePickerFragment是DialogFragment的子类。然后,在TimePickerFragment中,创建并配置显示TimePicker组件的AlertDialog实例。TimePickerFragment同样由CrimePagerActivity托管。

 

3.1)使用android.support.v4.app.DialogFragment库

创建TimePickerFragment类,并设置其超类DialogFragment,由android.support.v4.app.DialogFragment库支持。

 

在TimePickerFragment.java中,重载DialogFragment类的onCreateDialog(Bundle savedInstanceState)方法。由托管activity的FragmentManager会调用它,在屏幕上显示DialogFragment。

 

onCreateDialog(Bundle savedInstanceState)方法的实现代码,创建一个带标题栏和OK按钮的AlertDialog,代码如下。注意:导入AlertDialog时,还是选择AppCompat库中的版本:android.support.v7.app.AlertDialog。

 

 1 public class TimePickerFragment extends DialogFragment {
 2 
 3     @Override
 4     public Dialog onCreateDialog(Bundle savedInstanceState) {
 5 
 6         return new AlertDialog.Builder(getActivity())
 7                 .setTitle(R.string.time_picker_title)
 8                 .setPositiveButton(android.R.string.ok, null)
 9                 .create();
10     }
11 }

 

这里类似DatePickerFragment,使用AlerDialog.Builder类,以Fluent Interface的方式创建AlertDialog实例。

 

3.2)显示TimeDialogFragment

同DatePickerFragment一样,TimeDialogFragment实例也是由托管activity的FragmentManager管理。使用fragment实例的public void show(FragmentManager manager, String tag)方法,将TimePickerFragment添加给FragmentManager管理并放置到屏幕上。

 

在CrimeFragment(CrimeFragment.java)中,也为TimePickerFragment增加一个tag常量:

1 private static final String DIALOG_TIME = "DialogTime";

 

然后,在onCreateView(...)方法中,添加点击时间按钮展现TimePickerFragment界面,实现mTimeButton按钮的OnClickListener监听器接口,代码:

 1 public class CrimeFragment extends Fragment {
 2 
 3         ... ...
 4         private static final String DIALOG_TIME = "DialogTime";
 5 
 6         ... ...
 7 
 8         mTimeButton = (Button) v.findViewById(R.id.crime_time);
 9         mTimeButton.setText(DateFormat.format("h:mm a", mCrime.getDate()));
10         mTimeButton.setOnClickListener(new View.OnClickListener() {
11             @Override
12             public void onClick(View v) {
13                 FragmentManager manager = getFragmentManager();
14                 TimePickerFragment timeDialog = new TimePickerFragment();
15                 timeDialog.show(manager, DIALOG_TIME);
16             }
17         });
18 
19         ... ...
20 }

 

这就可以显示:带标题(Time of crime:)和OK(确定)按钮的AlertDialog。

 

3.3)设置对话框的显示内容

同DatePickerFragment.

这时需要在TimePirckerFragment(TimePirckerFragment.java)中,使用AlertDialog.Builder的setView(...)方法, 添加TimePicker组件给AlertDialog对话框:

1 public AlertDialog.Builder setView(View view)
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 《Android权威编程指南(The Big Nerd Ranch Guide)(第二版)》12.4挑战练习,bignerdranch

相关文章

  • 2017-05-26Android Facebook和Twitter分享
  • 2017-05-26AlertDialog的几种用法,alertdialog几种
  • 2017-05-26android 在5.0以后不允许使用隐式Intent方式来启动Service,androidintent
  • 2017-05-26VS2015墙内创建ionic2,vs2015墙ionic2
  • 2017-05-26Android开发学习之路--网络编程之xml、json
  • 2017-05-26安卓第一天笔记,安卓第一天
  • 2017-05-26Android--数据库数据显示至屏幕
  • 2017-05-26android:QQ多种侧滑菜单的实现
  • 2017-05-26【方法总结】创建、读取、删除文件相关操作,读取删除文件
  • 2017-05-222.4.2 Date & Time组件(上)

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Android adb shell命令合集
    • Android 中的长度单位详解
    • Mobizen免帐号版,Mobizen帐号版
    • 【Android性能工具】腾讯开源工具APT,androidapt
    • 6.3.2 数据存储与访问之——又见SQLite数据库
    • 解决VS2017不连接visual studio emulator for android,vs2017android
    • 手机安全卫士——通讯卫士-黑名单的管理,安全卫士卫士
    • Android 模仿发说说
    • android:Activity数据传递之静态变量
    • 编译器开发系列--Ocelot语言2.变量引用的消解,编译器--ocelot

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有