DialogFragment NumberPicker的使用

2024-08-23 11:58

本文主要是介绍DialogFragment NumberPicker的使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

DialogFragment参考博文:

http://www.cnblogs.com/tianzhijiexian/p/4161811.html

package com.example.util;import android.app.AlertDialog;
import android.app.Dialog;
import android.app.DialogFragment;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.v7.preference.Preference;
import android.support.v14.preference.SwitchPreference;
import android.text.format.Time;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.NumberPicker;public class BillingCycleSettings extends DataUsageBase implementsPreference.OnPreferenceChangeListener{public static class CycleEditorFragment extends DialogFragment implementsDialogInterface.OnClickListener{private static final String EXTRA_TEMPLATE="template";private NumberPicker mCycleDayPicker;public static void show(BillingCycleSettings parent){if(!parent.isAdded()) return;final Bundle args=new Bundle();args.putParcelable(EXTRA_TEMPLATE, parent.mNetworkTemplate);final CycleEditorFragment dialog=new CycleEditorFragment();dialog.setArguments(args);//这个方法可以保存Fragment的相关信息,同样是在Fragment中通过getArguments获取保存的信息dialog.setTargetFragment(parent, 0);//这个方法可以传递parent给dialog对应的类CycleEditorFragment,我们可以在CycleEditorFragment中通过getTargetFragment()获取parent实例dialog.show(parent.getFragmentManager(), TAG_CYCLE_EDITOR);}@Overridepublic Dialog onCreateDialog(Bundle savedInstanceState) {final Context context=getActivity();//Fragment中获取相关活动的方法final BillingCycleSettings target=(BillingCycleSettings)getTargetFragment();final NetworkPolicyEditor editor=target.services.mPolicyEditor;final AlertDialog.Builder builder=new AlertDialog.Builder(context);final LayoutInflater dialogInflater=LayoutInflater.from(builder.getContext());final View view=dialogInflater.inflate(R.layout.data_usage_cycle_editor, null,false);mCycleDayPicker=view.findViewById(R.id.cycle_day);final NetWorkTemplate template=getArguments().getParcelable(EXTRA_TEMPLATE);final int cycleDay=editor.getPolicyCycleDay(template);final int cycleDayValue=cycleDay;if(savedInstanceState!=null){cycleDayValue=savedInstanceState.getInt("cycleDayValue");}mCycleDayPicker.setMinValue(1);mCycleDayPicker.setMaxValue(31);mCycleDayPicker.setValue(cycleDayValue);mCycleDayPicker.setWrapSelectorWheel(true);return builder.setTitle(R.string.data_usage_cycle_editor_title).setView(view).setPositiveButton(R.string.data_usage_cycle_editor_positive,this).create();}@Overridepublic void onSaveInstanceState(Bundle outState) {// TODO Auto-generated method stubsuper.onSaveInstanceState(outState);outState.putInt("cycleDayValue", mCycleDayPicker.getValue());}@Overridepublic void onClick(DialogInterface arg0, int arg1) {final NetworkTemplate template=getArguments().getParcelable(EXTRA_TEMPLATE);final BillingCycleSettings target=(BillingCycleSettings)getTargetFragment();final NetworPolicyEditor editor=target.services.mPolicyEditor;mCycleDayPicker.clearFocus();final int cycleDay=mCycleDayPicker.getValue();final String cycleTimezone=new Time().timezone;editor.setPolicyCycleDay(template,cycleDay,cycleTimezone);target.updatePrefs();	}}}

对应的布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="horizontal" android:gravity="center"><TextView android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_vertical"android:textAppearance="?android:attr/textAppearanceMedium"android:text="@string/data_usage_cycle_editor_subtitle"/><NumberPicker android:id="@+id/cycle_day"android:layout_width="48dip"android:layout_height="wrap_content"android:layout_gravity="center_vertical"android:layout_marginStart="16dip"android:layout_marginEnd="16dip"android:focusable="true"android:focusableInTouchMode="true"/></LinearLayout>


这篇关于DialogFragment NumberPicker的使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1099317

相关文章

使用Dify访问mysql数据库详细代码示例

《使用Dify访问mysql数据库详细代码示例》:本文主要介绍使用Dify访问mysql数据库的相关资料,并详细讲解了如何在本地搭建数据库访问服务,使用ngrok暴露到公网,并创建知识库、数据库访... 1、在本地搭建数据库访问的服务,并使用ngrok暴露到公网。#sql_tools.pyfrom

使用mvn deploy命令上传jar包的实现

《使用mvndeploy命令上传jar包的实现》本文介绍了使用mvndeploy:deploy-file命令将本地仓库中的JAR包重新发布到Maven私服,文中通过示例代码介绍的非常详细,对大家的学... 目录一、背景二、环境三、配置nexus上传账号四、执行deploy命令上传包1. 首先需要把本地仓中要

Spring Cloud之注册中心Nacos的使用详解

《SpringCloud之注册中心Nacos的使用详解》本文介绍SpringCloudAlibaba中的Nacos组件,对比了Nacos与Eureka的区别,展示了如何在项目中引入SpringClo... 目录Naacos服务注册/服务发现引⼊Spring Cloud Alibaba依赖引入Naco编程s依

Java springBoot初步使用websocket的代码示例

《JavaspringBoot初步使用websocket的代码示例》:本文主要介绍JavaspringBoot初步使用websocket的相关资料,WebSocket是一种实现实时双向通信的协... 目录一、什么是websocket二、依赖坐标地址1.springBoot父级依赖2.springBoot依赖

Java使用Mail构建邮件功能的完整指南

《Java使用Mail构建邮件功能的完整指南》JavaMailAPI是一个功能强大的工具,它可以帮助开发者轻松实现邮件的发送与接收功能,本文将介绍如何使用JavaMail发送和接收邮件,希望对大家有所... 目录1、简述2、主要特点3、发送样例3.1 发送纯文本邮件3.2 发送 html 邮件3.3 发送带

使用DeepSeek搭建个人知识库(在笔记本电脑上)

《使用DeepSeek搭建个人知识库(在笔记本电脑上)》本文介绍了如何在笔记本电脑上使用DeepSeek和开源工具搭建个人知识库,通过安装DeepSeek和RAGFlow,并使用CherryStudi... 目录部署环境软件清单安装DeepSeek安装Cherry Studio安装RAGFlow设置知识库总

Python FastAPI入门安装使用

《PythonFastAPI入门安装使用》FastAPI是一个现代、快速的PythonWeb框架,用于构建API,它基于Python3.6+的类型提示特性,使得代码更加简洁且易于绶护,这篇文章主要介... 目录第一节:FastAPI入门一、FastAPI框架介绍什么是ASGI服务(WSGI)二、FastAP

Spring-AOP-ProceedingJoinPoint的使用详解

《Spring-AOP-ProceedingJoinPoint的使用详解》:本文主要介绍Spring-AOP-ProceedingJoinPoint的使用方式,具有很好的参考价值,希望对大家有所帮... 目录ProceedingJoinPoijsnt简介获取环绕通知方法的相关信息1.proceed()2.g

Maven pom.xml文件中build,plugin标签的使用小结

《Mavenpom.xml文件中build,plugin标签的使用小结》本文主要介绍了Mavenpom.xml文件中build,plugin标签的使用小结,文中通过示例代码介绍的非常详细,对大家的学... 目录<build> 标签Plugins插件<build> 标签<build> 标签是 pom.XML

JAVA虚拟机中 -D, -X, -XX ,-server参数使用

《JAVA虚拟机中-D,-X,-XX,-server参数使用》本文主要介绍了JAVA虚拟机中-D,-X,-XX,-server参数使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有... 目录一、-D参数二、-X参数三、-XX参数总结:在Java开发过程中,对Java虚拟机(JVM)的启动参数进