启动从编辑文本一个datepicker [英] Launching a DatePicker from edit text
本文介绍了启动从编辑文本一个datepicker的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我使用日期选取器上的一个 的EditText
编辑文本的ID是 :: 机器人:ID =@ + ID / DATE_EDIT_TEXT_ID
search_page.xml
< XML版本=1.0编码=UTF-8&GT?;
< LinearLayout中的xmlns:机器人=http://schemas.android.com/apk/res/android
的xmlns:工具=http://schemas.android.com/tools
机器人:layout_width =match_parent
机器人:layout_height =match_parent
机器人:方向=垂直>
<的LinearLayout
机器人:layout_width =FILL_PARENT
机器人:layout_height =WRAP_CONTENT
机器人:后台=#E1E1E1
机器人:方向=横向
机器人:填充=10dp
机器人:weightSum =1>
<的TextView
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =WRAP_CONTENT
机器人:文本=城
机器人:TEXTSIZE =15dp
机器人:TEXTSTYLE =黑体/>
<的EditText
机器人:layout_width =match_parent
机器人:layout_height =WRAP_CONTENT
机器人:layout_marginLeft =10dp
机器人:背景=@可绘制/ rounded_edittext/>
< / LinearLayout中>
<查看
机器人:layout_width =FILL_PARENT
机器人:layout_height =1DP
机器人:背景=@机器人:彩色/黑白/>
<的LinearLayout
机器人:layout_width =FILL_PARENT
机器人:layout_height =WRAP_CONTENT
机器人:后台=#E1E1E1
机器人:方向=横向
机器人:填充=10dp
机器人:weightSum =1>
<的TextView
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =WRAP_CONTENT
机器人:文本=日期
机器人:TEXTSIZE =15dp
机器人:TEXTSTYLE =黑体/>
<的EditText
机器人:ID =@ + ID / DATE_EDIT_TEXT_ID
机器人:layout_width =258dp
机器人:layout_height =WRAP_CONTENT
机器人:layout_marginLeft =10dp
机器人:背景=@可绘制/ rounded_edittext
机器人:的onClick =selectDate/>
< / LinearLayout中>
<查看
机器人:layout_width =FILL_PARENT
机器人:layout_height =1DP
机器人:背景=@机器人:彩色/黑白/>
<的LinearLayout
机器人:layout_width =match_parent
机器人:layout_height =WRAP_CONTENT
机器人:后台=#E1E1E1
机器人:方向=横向
机器人:填充=10dp
机器人:weightSum =2.5>
<的TextView
机器人:layout_width =0dp
机器人:layout_height =WRAP_CONTENT
机器人:layout_weight =1
机器人:文本=类型
机器人:TEXTSIZE =15dp
机器人:TEXTSTYLE =黑体/>
< RadioGroup中
机器人:ID =@ + ID / radioGroup1
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =WRAP_CONTENT
机器人:layout_weight =1
机器人:方向=横向>
<单选按钮
机器人:ID =@ + ID / radio0
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =WRAP_CONTENT
机器人:layout_marginRight =2DP
机器人:layout_weight =5
机器人:背景=@可绘制/ yourbuttonbackground
机器人:按钮=@机器人:彩色/透明
机器人:检查=真
机器人:重力=center_horizontal
机器人:填充=5DP
机器人:文本=早餐/>
<单选按钮
机器人:ID =@ + ID /收音机1
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =WRAP_CONTENT
机器人:layout_marginRight =2DP
机器人:layout_weight =5
机器人:背景=@可绘制/ yourbuttonbackground
机器人:按钮=@机器人:彩色/透明
机器人:重力=center_horizontal
机器人:填充=5DP
机器人:文本=午餐/>
<单选按钮
机器人:ID =@ + ID / RADIO2
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =WRAP_CONTENT
机器人:layout_marginRight =2DP
机器人:layout_weight =5
机器人:背景=@可绘制/ yourbuttonbackground
机器人:按钮=@机器人:彩色/透明
机器人:重力=center_horizontal
机器人:填充=5DP
机器人:文本=晚餐/>
< / RadioGroup中>
< / LinearLayout中>
<查看
机器人:layout_width =FILL_PARENT
机器人:layout_height =1DP
机器人:背景=@机器人:彩色/黑白/>
< RelativeLayout的
机器人:layout_width =FILL_PARENT
机器人:layout_height =254dp
机器人:后台=#E1E1E1
机器人:的onClick =selectDate
机器人:方向=横向
机器人:填充=10dp
机器人:weightSum =1>
<按钮
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =WRAP_CONTENT
机器人:layout_alignParentTop =真
机器人:layout_centerHorizontal =真
机器人:layout_marginTop =38dp
机器人:背景=@可绘制/ blue_button
机器人:文本=搜索/>
< / RelativeLayout的>
< RelativeLayout的
机器人:layout_width =FILL_PARENT
机器人:layout_height =50dp
机器人:后台=#E1E1E1
机器人:方向=横向>
<包括布局=@布局/ screen_bottombar_photodesc/>
< / RelativeLayout的>
< / LinearLayout中>
SearchPage.java
公共类SearchPage扩展FragmentActivity {
的EditText mEdit;
@覆盖
公共无效的onCreate(包savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.search_page);
}
公共无效selectDate(查看视图){
DialogFragment newFragment =新SelectDateFragment();
newFragment.show(getSupportFragmentManager(),的DatePicker);
}
公共无效populateSetDate(INT年,月整型,INT日){
mEdit =(EditText上)findViewById(R.id.DATE_EDIT_TEXT_ID);
mEdit.setText(日+/+月+/+年);
}
公共类SelectDateFragment扩展DialogFragment实现DatePickerDialog.OnDateSetListener {
@覆盖
公共对话onCreateDialog(包savedInstanceState){
最后台历挂历= Calendar.getInstance();
INT YY = calendar.get(Calendar.YEAR);
INT毫米= calendar.get(Calendar.MONTH);
INT DD = calendar.get(Calendar.DAY_OF_MONTH);
返回新DatePickerDialog(getActivity(),这,YY,MM,DD);
}
公共无效onDateSet(DatePicker的观点,诠释YY,诠释毫米,诠释DD){
populateSetDate(YY,DD,MM们+ 1);
}
}
}
- 当我点击的编辑文本
机器人:ID =@ + ID / DATE_EDIT_TEXT_ID
日期选择器应启动 - ,但发生的事情是,无论我点击屏幕日期选择器 现推出
如何解决这个
解决方案
//试试这个
公共类SearchPage扩展FragmentActivity {
的EditText mEdit;
DialogFragment newFragment;
@覆盖
公共无效的onCreate(包savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.search_page);
mEdit =(EditText上)findViewById(R.id.DATE_EDIT_TEXT_ID);
newFragment =新SelectDateFragment();
mEdit.setOnClickListener(新View.OnClickListener(){
@覆盖
公共无效的onClick(视图查看){
newFragment.show(getFragmentManager(),的DatePicker);
}
});
}
公共无效populateSetDate(INT年,月整型,INT日){
mEdit.setText(日+/+月+/+年);
}
公共类SelectDateFragment扩展DialogFragment实现DatePickerDialog.OnDateSetListener {
@覆盖
公共对话onCreateDialog(包savedInstanceState){
最后台历挂历= Calendar.getInstance();
INT YY = calendar.get(Calendar.YEAR);
INT毫米= calendar.get(Calendar.MONTH);
INT DD = calendar.get(Calendar.DAY_OF_MONTH);
返回新DatePickerDialog(getActivity(),这,YY,MM,DD);
}
公共无效onDateSet(DatePicker的观点,诠释YY,诠释毫米,诠释DD){
populateSetDate(YY,DD,MM们+ 1);
}
}
}
I am using Date picker on one of the edittext
ID of edit text is :: android:id="@+id/DATE_EDIT_TEXT_ID"
search_page.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#E1E1E1"
android:orientation="horizontal"
android:padding="10dp"
android:weightSum="1" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="City"
android:textSize=" 15dp"
android:textStyle="bold" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:background="@drawable/rounded_edittext" />
</LinearLayout>
<View
android:layout_width="fill_parent"
android:layout_height="1dp"
android:background="@android:color/black" />
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#E1E1E1"
android:orientation="horizontal"
android:padding="10dp"
android:weightSum="1" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Date"
android:textSize=" 15dp"
android:textStyle="bold" />
<EditText
android:id="@+id/DATE_EDIT_TEXT_ID"
android:layout_width="258dp"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:background="@drawable/rounded_edittext"
android:onClick="selectDate" />
</LinearLayout>
<View
android:layout_width="fill_parent"
android:layout_height="1dp"
android:background="@android:color/black" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#E1E1E1"
android:orientation="horizontal"
android:padding="10dp"
android:weightSum="2.5" >
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Type"
android:textSize=" 15dp"
android:textStyle="bold" />
<RadioGroup
android:id="@+id/radioGroup1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal" >
<RadioButton
android:id="@+id/radio0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="2dp"
android:layout_weight=".5"
android:background="@drawable/yourbuttonbackground"
android:button="@android:color/transparent"
android:checked="true"
android:gravity="center_horizontal"
android:padding="5dp"
android:text="Breakfast" />
<RadioButton
android:id="@+id/radio1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="2dp"
android:layout_weight=".5"
android:background="@drawable/yourbuttonbackground"
android:button="@android:color/transparent"
android:gravity="center_horizontal"
android:padding="5dp"
android:text="Lunch" />
<RadioButton
android:id="@+id/radio2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="2dp"
android:layout_weight=".5"
android:background="@drawable/yourbuttonbackground"
android:button="@android:color/transparent"
android:gravity="center_horizontal"
android:padding="5dp"
android:text="Dinner" />
</RadioGroup>
</LinearLayout>
<View
android:layout_width="fill_parent"
android:layout_height="1dp"
android:background="@android:color/black" />
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="254dp"
android:background="#E1E1E1"
android:onClick="selectDate"
android:orientation="horizontal"
android:padding="10dp"
android:weightSum="1" >
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="38dp"
android:background="@drawable/blue_button"
android:text="Search" />
</RelativeLayout>
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="50dp"
android:background="#E1E1E1"
android:orientation="horizontal" >
<include layout="@layout/screen_bottombar_photodesc" />
</RelativeLayout>
</LinearLayout>
SearchPage.java
public class SearchPage extends FragmentActivity {
EditText mEdit;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.search_page);
}
public void selectDate(View view) {
DialogFragment newFragment = new SelectDateFragment();
newFragment.show(getSupportFragmentManager(), "DatePicker");
}
public void populateSetDate(int year, int month, int day) {
mEdit = (EditText)findViewById(R.id.DATE_EDIT_TEXT_ID);
mEdit.setText(day+"/"+month+"/"+year);
}
public class SelectDateFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
final Calendar calendar = Calendar.getInstance();
int yy = calendar.get(Calendar.YEAR);
int mm = calendar.get(Calendar.MONTH);
int dd = calendar.get(Calendar.DAY_OF_MONTH);
return new DatePickerDialog(getActivity(), this, yy, mm, dd);
}
public void onDateSet(DatePicker view, int yy, int mm, int dd) {
populateSetDate(yy, dd, mm+1);
}
}
}
- When I click the edit text of
android:id="@+id/DATE_EDIT_TEXT_ID"
the date picker should launch - but what's happening is wherever I click on the screen date picker is launching
how to resolve this
解决方案
// try this
public class SearchPage extends FragmentActivity {
EditText mEdit;
DialogFragment newFragment;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.search_page);
mEdit = (EditText)findViewById(R.id.DATE_EDIT_TEXT_ID);
newFragment = new SelectDateFragment();
mEdit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
newFragment.show(getFragmentManager(), "DatePicker");
}
});
}
public void populateSetDate(int year, int month, int day) {
mEdit.setText(day+"/"+month+"/"+year);
}
public class SelectDateFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
final Calendar calendar = Calendar.getInstance();
int yy = calendar.get(Calendar.YEAR);
int mm = calendar.get(Calendar.MONTH);
int dd = calendar.get(Calendar.DAY_OF_MONTH);
return new DatePickerDialog(getActivity(), this, yy, mm, dd);
}
public void onDateSet(DatePicker view, int yy, int mm, int dd) {
populateSetDate(yy, dd, mm+1);
}
}
}
这篇关于启动从编辑文本一个datepicker的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文