与DialopFragment显示日历还创建日期选择器 [英] Datepicker created with DialopFragment showing Calender also

查看:300
本文介绍了与DialopFragment显示日历还创建日期选择器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是新来的Andr​​oid编程和我使用的使用DialogFragment一个基本的日期选择器创建的。我的DatePicker显示了罚款,点击等等,但问题是,它是显示日历视图为好。我不想要这个。我一直在寻找了一天的解决方案,现在,我不愿意使用自定义Datepickers现在,我想熟悉的基础知识第一。

我也看到了建议,如

  yourDatepicker.setCalendarViewShown(假);

或将其设置为在XML假的。但我的DatePicker来自DialogFragment,让我怎么访问此日期选择器?如何设置它的最终看法?我不希望在源$ C ​​$ C变化,我仍然在学习的绳索。

我的日期选择器code:

 公共类DueDatePickerFragment扩展DialogFragment实现DatePickerDialog.OnDateSetListener {
    @覆盖
    公共对话框onCreateDialog(捆绑savedInstanceState){
            最后的日历C = Calendar.getInstance();
            年整型= c.get(Calendar.YEAR);
            INT月= c.get(的Calendar.MONTH);
            INT天= c.get(Calendar.DAY_OF_MONTH);
            返回新DatePickerDialog(getActivity(),这,年,月,日);
    }    公共无效onDateSet(查看的DatePicker,年整型,诠释月,日整型){
        // code到截止日期文本字段设置为选定的日期。
        TextView的reminderText =(TextView中)getActivity()findViewById(R.id.addTaskFormDueDateHolder)。        字符串dueDateStr =年+ - +月+ - +天;
        reminderText.setText(dueDateStr);
    }
}


解决方案

我已经使用日期选择器对话框片段,显示在对话框中的日期选择器。

下面是我完全code

MainActivity.java

 包com.example.testmydrag;进口android.os.Bundle;
进口android.view.View;
进口android.widget.EditText;
进口android.widget.DatePicker;
进口android.support.v4.app.FragmentActivity;
进口android.app.Dialog;
进口android.app.DatePickerDialog;
进口android.support.v4.app.DialogFragment;进口的java.util.Calendar;公共类MainActivity扩展FragmentActivity {的EditText mEdit;
    @覆盖
    公共无效的onCreate(捆绑savedInstanceState){        super.onCreate(savedInstanceState);
        的setContentView(R.layout.main);
    }    公共无效selectDate(查看视图){        DialogFragment newFragment =新SelectDateFragment();
        newFragment.show(getSupportFragmentManager(),的DatePicker);    }    公共无效setTheDate(INT年,月整型,诠释天){        mEdit =(EditText上)findViewById(R.id.Text);
        mEdit.setText(月+/+日+/+年);
    }
    / *
     *日期选取器对话框
     * /
    公共类SelectDateFragment扩展DialogFragment实现DatePickerDialog.OnDateSetListener {
        @覆盖
        公共对话框onCreateDialog(捆绑savedInstanceState){            最后的日历C = Calendar.getInstance();
            INT YY = c.get(Calendar.YEAR);
            INT毫米= c.get(的Calendar.MONTH);
            INT DD = c.get(Calendar.DAY_OF_MONTH);            DatePickerDialog对话框=新DatePickerDialog(getActivity(),这一点,c.YEAR,c.MONTH,c.DATE);            / *日历视图,如果你想删除其设置为false * /
            dialog.getDatePicker()setCalendarViewShown(真)。            / *微调查看,如果你想显示其设置为true * /
            dialog.getDatePicker()setSpinnersShown(假)。            dialog.setTitle(选择一个日期);
            返回对话框;
        }
        公共无效onDateSet(查看的DatePicker,诠释YY,INT毫米,诠释DD){            setTheDate(YY的MM + 1,DD);
        }
    }}

main.xml中

 <?XML版本=1.0编码=UTF-8&GT?;
< LinearLayout中的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
    机器人:方向=垂直
    机器人:layout_width =FILL_PARENT
    机器人:layout_height =FILL_PARENT
    >
    <机器人的EditText:文本=@ +串/ DATE_TEXT
        机器人:ID =@ + ID /文本
        机器人:layout_width =WRAP_CONTENT
        机器人:layout_height =WRAP_CONTENT/>
    <按钮
        机器人:layout_width =WRAP_CONTENT
        机器人:layout_height =WRAP_CONTENT
        机器人:文字=@ +串/ pick_date
        安卓的onClick =selectDate/>< / LinearLayout中>

I am new to Android programming and I am using a basic Datepicker created using a DialogFragment. My DatePicker shows up fine on click etc., but the problem is that it is displaying the Calendar view as well. I do not want this. I have been searching for a solution for a day now, and I am unwilling to use custom Datepickers right now, as I want to get familiar with the basics first.

I have also read suggestions such as

yourDatepicker.setCalendarViewShown(false); 

or set it to false in the XML. But my DatePicker comes from a DialogFragment, so how do I access this datepicker? How do I set its final view? I do not wish to make changes in the source code as I am still learning the ropes.

My datepicker code:

public class DueDatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener {
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
            final Calendar c = Calendar.getInstance();
            int year = c.get(Calendar.YEAR);
            int month = c.get(Calendar.MONTH);
            int day = c.get(Calendar.DAY_OF_MONTH);
            return new DatePickerDialog(getActivity(), this, year, month, day);
    }

    public void onDateSet(DatePicker view, int year, int month, int day){    
        // Code to set Due Date TextField to the selected date.
        TextView reminderText = (TextView)getActivity().findViewById(R.id.addTaskFormDueDateHolder);

        String dueDateStr = year + "-" + month + "-" + day;
        reminderText.setText(dueDateStr);
    }
}

解决方案

I have used Datepicker Dialog Fragment, to show the Date picker in dialog.

Here is my Complete Code

MainActivity.java

package com.example.testmydrag;

import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.DatePicker;
import android.support.v4.app.FragmentActivity;
import android.app.Dialog;
import android.app.DatePickerDialog;
import android.support.v4.app.DialogFragment;

import java.util.Calendar;

public class MainActivity extends FragmentActivity {

EditText mEdit;
    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }

    public void selectDate(View view) {

        DialogFragment newFragment = new SelectDateFragment();
        newFragment.show(getSupportFragmentManager(), "DatePicker");

    }

    public void setTheDate(int year, int month, int day) {

        mEdit = (EditText)findViewById(R.id.Text);
        mEdit.setText(month+"/"+day+"/"+year);
    }
    /*
     * Date Picker Dialog
     */
    public class SelectDateFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener {
        @Override
        public Dialog onCreateDialog(Bundle savedInstanceState) {

            final Calendar c = Calendar.getInstance();
            int yy = c.get(Calendar.YEAR);
            int mm = c.get(Calendar.MONTH);
            int dd = c.get(Calendar.DAY_OF_MONTH);

            DatePickerDialog dialog = new DatePickerDialog(getActivity(),this,c.YEAR, c.MONTH, c.DATE);

            /*Calendar View if you want to Remove Set it to False*/
            dialog.getDatePicker().setCalendarViewShown(true);

            /*Spinner View if you want to Show Set it to True*/
            dialog.getDatePicker().setSpinnersShown(false);

            dialog.setTitle("Pick a date");
            return dialog;
        }
        public void onDateSet(DatePicker view, int yy, int mm, int dd) {

            setTheDate(yy, mm+1, dd);
        }
    }

}

main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <EditText android:text="@+string/date_text" 
        android:id="@+id/Text" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" />
    <Button 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content"
        android:text="@+string/pick_date" 
        android:onClick="selectDate" />

</LinearLayout>

这篇关于与DialopFragment显示日历还创建日期选择器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆