Android-从 DatePickerDialogFragment 中删除 Calendarview

2024-01-09

我有一个工作正常的 Datepickerdialog 片段。当我单击按钮时,datepickerdialog 将打开,左侧有微调器日期选择,右侧有日历视图。

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

在其他地方,我希望必须显示日历视图部分,并且必须隐藏或删除微调器日期选择。

但我尝试了很多不同的事情,比如隐藏日历视图,比如

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

但是当我添加这个时,我只收到错误...

这个人也有同样的问题使用 DialogFragment 创建的日期选择器还显示日历 https://stackoverflow.com/questions/14627983/datepicker-created-with-dialopfragment-showing-calender-also

我的代码是

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>

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

这是我的代码:

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>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android-从 DatePickerDialogFragment 中删除 Calendarview 的相关文章

随机推荐

  • 是否有提交空选择多个的标准客户端行为?

    http www w3 org TR html401 interact forms html edef SELECT http www w3 org TR html401 interact forms html edef SELECT 不指
  • 使用 java 中的 scala.collection.immutable.Set 的示例

    有熟悉 Scala 的人知道我如何使用scala collection immutable Set http www scala lang org docu files api scala collection immutable Set
  • 实体框架 6 代码优先 - 存储库实现是一个好的实现吗?

    我即将使用存储库和工作单元实现 Entity Framework 6 设计 周围有很多文章 我不确定最好的建议是什么 例如 我真的很喜欢这里实现的模式 出于文章中建议的原因here http codefizzle wordpress com
  • 我应该在事务中包含 SELECT 吗?

    当使用数据库事务对多个更新进行分组时 我是否也应该在事务中包含 SELECT 例如 假设我 得到一个记录 使用记录中的数据检查该记录的编辑权限 更新一些记录 更新一些其他记录 我应该在 获取记录 阶段之前开始交易 还是在更新前后开始交易 我
  • iframe 中的 Javascript window.opener

    我正在尝试使用弹出窗口脚本文件中的 window opener 引用来访问弹出窗口的开启器 考虑 popup html 中包含的以下脚本 http localhost test popup html 当不涉及 iframe 时 此方法有效
  • 获取 li 元素的文本

    ul class leftbutton li Sample 1 li li Sample 2 li li Sample 3 li li Sample 4 li li Sample 5 li ul 我想获取 id menu selected
  • 创建类似于 iBook 或 Stanza 应用程序的 ePub 阅读器的最佳方法 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何在 gnuplot 中为 xticlabels 提供自定义字符串参数?

    假设我有一个包含三列的数据文件 我希望能够更改 x 轴标签 经过一番谷歌搜索后我发现xticlabels 但问题是它似乎只接受列号作为参数 用于 ex 绘图xticlabels 3 用第三列标记标签 我希望能够把类似的东西 1 2作为该函数
  • 合并重复的数组项

    我有一个哈希数组 array keyword gt A total value gt 50 keyword gt B total value gt 25 keyword gt C total value gt 40 keyword gt A
  • 进程友善度(优先级)设置对 Linux 没有影响

    我编写了一个测试程序 其中仅包含一个无限循环 其中包含一些 内部计算 并且不执行 I O 操作 我尝试启动该程序的两个实例 其中一个具有高 尼斯值 另一个具有低尼斯值 sudo nice n 19 taskset 1 test sudo n
  • 来自 github 的 Git 存储库空绿色文件夹

    我正在从 github 中提取 git 存储库 当我克隆存储库时 会出现一个空文件夹 其中应该包含一个项目 由于其他项目引用了该文件夹 当我浏览 github 上的存储库时 该文件夹显示为绿色 我有什么遗漏的吗 我在用 git clone
  • 在 Xcode 上管理代码片段的最佳方法是什么?

    我已经爱上了 Visual Studio 的代码片段工具包 Xcode 上有类似的东西吗 您还可以看看this https stackoverflow com questions 20420 any resharper equivalent
  • 如何在Windows上安装PLV8?

    我正在尝试将其安装在我的 PostgreSQL 服务器上 http code google com p plv8js wiki PLV8 http code google com p plv8js wiki PLV8这些文档看起来很棒 但问
  • 断开连接的图表上缺少悬停标记

    我遇到了一个问题 我不确定这是 highcharts 插件中的错误还是编程错误 我使用空值来绘制仅包含一个系列的断开线图 但这似乎是悬停标记的问题 其中一些标记 在第一行的顶部和第二行的底部 似乎没有出现 代码很简单 但我找不到导致此问题的
  • Python - 来自 stdin 的 HTTP post [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我每秒左右从 bash 命令 ibeacon scan 获取这种格式的数据 ibeacon scan b stdin py Out
  • 带 -a 的路径对于 bash 函数没有意义

    这是我的 bash 函数 push gt cd var www html wp gt git init gt git add gt git commit am 1 gt git push f origin master gt 我想执行它 d
  • 如何从支持某些 API 的函数返回非具体值?

    我正在两个模型之间构建 API 我不在乎它是否返回 或 Seq 或任何可折叠的都可以 但如果我尝试这样做 就会出错 module Main where import Prelude hiding foldr import Data Fold
  • C# 检查对象是否为空

    我在使用 if 语句检查对象是否为空时遇到问题 我有一个 webClient 在 try catch 中从网站中提取 JSON 字符串 如果出错 那是因为 API 中不存在 3 位国家 地区 我只想跳过它 这是我的代码 System Net
  • 检查 servlet 和 jsp 中的会话

    在我的网络应用程序中 我需要检查会话是否存在 我想在我的 servlet 和 jsp 中检查这一点 有什么方法可以检查这个吗 Thanks 你可以测试它HttpServletRequest getSession boolean create
  • Android-从 DatePickerDialogFragment 中删除 Calendarview

    我有一个工作正常的 Datepickerdialog 片段 当我单击按钮时 datepickerdialog 将打开 左侧有微调器日期选择 右侧有日历视图 对于我在一个地方的应用程序 我只想单独显示微调器日期选择部分 必须删除或隐藏日历视图