Android-从DatePickerDialogFragment删除Calendarview [英] Android- Remove Calendarview from DatePickerDialogFragment

查看:255
本文介绍了Android-从DatePickerDialogFragment删除Calendarview的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有工作fine.When我点击datepickerdialog打开按钮whixh对右侧左侧,日历视图微调日期选择一个Datepickerdialog片段。

有关我在一个地方应用程序,我想只是微调日期选择单独的部分中显示(日历视图部分必须被删除或隐藏)

在别的地方,我想日历视图部分必须被证明和微调日期选择必须隐藏或删除。

但我想了很多像各种事情隐藏像

日历视图

 方法M = minDateSelector.getClass()实现getMethod(setCalendarViewShown,boolean.class)。
 m.invoke(DP,FALSE);

但是当我添加此我得到错误仅...

有关此人同样的问题太多
<一href=\"http://stackoverflow.com/questions/14627983/datepicker-created-with-dialopfragment-showing-calender-also\">Datepicker与DialopFragment显示日历也的创建

我的code是

DatePickerActivity.java

 进口java.util.Calendar中;
进口android.app.Activity;
进口android.app.FragmentTransaction;
进口android.os.Bundle;
进口android.view.View;
进口android.widget.Button;公共类DatePickerActivity延伸活动{
    DateDialogFragment FRAG;
    Button按钮;
    现在日历;
    @覆盖
    公共无效的onCreate(捆绑savedInstanceState){
        super.onCreate(savedInstanceState);
        的setContentView(R.layout.main);
        现在= Calendar.getInstance();
        按钮=(按钮)findViewById(R.id.date_button);
        button.setText(String.valueOf(now.get(Calendar.MONTH)+1)+\"-\"+String.valueOf(now.get(Calendar.DAY_OF_MONTH))+\"-\"+String.valueOf(now.get(Calendar.YEAR)));
        button.setOnClickListener(新View.OnClickListener(){
            公共无效的onClick(视图v){
                的ShowDialog();
            }
        });
    }
    公共无效的ShowDialog(){
        FragmentTransaction英尺= getFragmentManager()调用BeginTransaction()。 //获取片段
        FRAG = DateDialogFragment.newInstance(这一点,新DateDialogFragmentListener(){
            公共无效updateChangedDate(INT年,月整型,诠释天){
                button.setText(将String.valueOf(月+ 1)+ - +将String.valueOf(天)+ - +将String.valueOf(年));
                now.set(年,月,日);
            }
        },现在);        frag.show(英尺DateDialogFragment);
    }
    公共接口DateDialogFragmentListener {
        //此接口是日期对话片段和更新按钮日期活动之间的监听器
        公共无效updateChangedDate(INT年,月整型,诠释天);
    }
}

DateDialogFragment.java

 进口java.util.Calendar中;进口com.zeroe.DatePickerActivity.DateDialogFragmentListener;进口android.app.DatePickerDialog;
进口android.app.Dialog;
进口android.app.DialogFragment;
进口android.content.Context;
进口android.os.Bundle;
进口android.widget.DatePicker;公共类DateDialogFragment扩展DialogFragment {    公共静态字符串标记=DateDialogFragment;
    静态上下文mContext; //我猜持有调用它的上下文。制作DatePickerDialog在需要的时候。我想它需要与上下文conncting片段时,
    静态INT mYear;
    静态INT mMonth;
    静态INT MDAY;
    静态DateDialogFragmentListener mListener;    公共静态的newInstance DateDialogFragment(上下文的背景下,DateDialogFragmentListener监听器,现在日历){
        DateDialogFragment对话框=新DateDialogFragment();
        mContext =背景;
        mListener =侦听器;        mYear = now.get(Calendar.YEAR);
        mMonth = now.get(的Calendar.MONTH);
        MDAY = now.get(Calendar.DAY_OF_MONTH);
        / *我真的不看下面的宗旨* /
        捆绑ARGS =新包();
        args.putString(称号,选择日期);
        dialog.setArguments(参数); // setArguments只能之前片段被连接到一个活动创建片段后调用,因此右
        返回对话框;
    }
    公共对话框onCreateDialog(捆绑savedInstanceState){
        返回新DatePickerDialog(mContext,mDateSetListener,mYear,mMonth,MDAY);
    }
    私人DatePickerDialog.OnDateSetListener mDateSetListener =新DatePickerDialog.OnDateSetListener(){        @覆盖
        公共无效onDateSet(查看的DatePicker,年整型,诠释monthOfYear,
                INT请将dayOfMonth){
            mYear =年;
            mMonth = monthOfYear;
            MDAY =请将dayOfMonth;            mListener.updateChangedDate(年,monthOfYear,请将dayOfMonth);
        }
    };
}

main.xml中

 &LT;?XML版本=1.0编码=UTF-8&GT?;
&LT; LinearLayout中的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
    机器人:layout_width =FILL_PARENT
    机器人:layout_height =FILL_PARENT
    机器人:方向=垂直&GT;    &LT;按钮
        机器人:ID =@ + ID / date_button
        机器人:layout_width =WRAP_CONTENT
        机器人:layout_height =WRAP_CONTENT
        机器人:文字=2012年3月18日
        安卓的onClick =clickMe/&GT;&LT; / LinearLayout中&GT;


解决方案

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

下面是我的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中

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

I have a Datepickerdialog fragment which works fine.When i click the button the datepickerdialog opens whixh has spinner date selection on the left side and calendar view on the right side.

For my app in one place i want just the spinner date selection part alone to be shown(calendar view part must be removed or hidden)

In other place i want calendar view part must be shown and the spinner date selection must be hidden or removed.

But i tried a lot with various things like for hiding calendar view like

 Method m = minDateSelector.getClass().getMethod("setCalendarViewShown", boolean.class);
 m.invoke(dp, false);

but when i add this i get error only...

Same problem for this person too Datepicker created with DialopFragment showing Calender also

my code is

DatePickerActivity.java

import java.util.Calendar;
import android.app.Activity;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class DatePickerActivity extends Activity {
    DateDialogFragment frag;
    Button button;
    Calendar now;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        now = Calendar.getInstance();
        button = (Button)findViewById(R.id.date_button);
        button.setText(String.valueOf(now.get(Calendar.MONTH)+1)+"-"+String.valueOf(now.get(Calendar.DAY_OF_MONTH))+"-"+String.valueOf(now.get(Calendar.YEAR)));
        button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                showDialog();   
            }
        });  
    }
    public void showDialog() {
        FragmentTransaction ft = getFragmentManager().beginTransaction(); //get the fragment
        frag = DateDialogFragment.newInstance(this, new DateDialogFragmentListener(){
            public void updateChangedDate(int year, int month, int day){
                button.setText(String.valueOf(month+1)+"-"+String.valueOf(day)+"-"+String.valueOf(year));
                now.set(year, month, day);
            }
        }, now);

        frag.show(ft, "DateDialogFragment");
    }
    public interface DateDialogFragmentListener{
        //this interface is a listener between the Date Dialog fragment and the activity to update the buttons date
        public void updateChangedDate(int year, int month, int day);
    }  
}

DateDialogFragment.java

import java.util.Calendar;

import com.zeroe.DatePickerActivity.DateDialogFragmentListener;

import android.app.DatePickerDialog;
import android.app.Dialog;
import android.app.DialogFragment;
import android.content.Context;
import android.os.Bundle;
import android.widget.DatePicker;

public class DateDialogFragment extends DialogFragment {

    public static String TAG = "DateDialogFragment";
    static Context mContext; //I guess hold the context that called it. Needed when making a DatePickerDialog. I guess its needed when conncting the fragment with the context
    static int mYear;
    static int mMonth;
    static int mDay;
    static DateDialogFragmentListener mListener;

    public static DateDialogFragment newInstance(Context context, DateDialogFragmentListener listener, Calendar now) {
        DateDialogFragment dialog = new DateDialogFragment();
        mContext = context;
        mListener = listener;

        mYear = now.get(Calendar.YEAR);
        mMonth = now.get(Calendar.MONTH);
        mDay = now.get(Calendar.DAY_OF_MONTH);
        /*I dont really see the purpose of the below*/
        Bundle args = new Bundle();
        args.putString("title", "Choose Date");
        dialog.setArguments(args);//setArguments can only be called before fragment is attached to an activity, so right after the fragment is created


        return dialog;
    }
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        return new DatePickerDialog(mContext, mDateSetListener, mYear, mMonth, mDay);
    }
    private DatePickerDialog.OnDateSetListener mDateSetListener = new DatePickerDialog.OnDateSetListener() {

        @Override
        public void onDateSet(DatePicker view, int year, int monthOfYear,
                int dayOfMonth) {
            mYear = year;
            mMonth = monthOfYear;
            mDay = dayOfMonth;

            mListener.updateChangedDate(year, monthOfYear, dayOfMonth);
        }
    };
}

main.xml

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <Button 
        android:id="@+id/date_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="03-18-2012"
        android:onClick="clickMe"/>

</LinearLayout>

解决方案

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

Here is my 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>

这篇关于Android-从DatePickerDialogFragment删除Calendarview的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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