首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >永久设置DatePickerDialog标题

永久设置DatePickerDialog标题
EN

Stack Overflow用户
提问于 2012-10-29 22:19:16
回答 5查看 19.5K关注 0票数 17

我在尝试永久设置DatePickerDialog标题时遇到问题。

DatePickerFragment.java

代码语言:javascript
复制
public class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener {

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {

    // Use the current date as the default date in the picker
    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);

    // Create a new instance of DatePickerDialog and return it
    DatePickerDialog dpd = new DatePickerDialog(getActivity(), this, year, month, day);
    dpd.setTitle("set date");
    return dpd;
    }

    public void onDateSet(DatePicker view, int year, int month, int day) {
    // Do something with the date chosen by the user
    }
}

MainActivity.java

代码语言:javascript
复制
public class MainActivity extends FragmentActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button btn = (Button) findViewById(R.id.button1);

        btn.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                DialogFragment newFragment = new DatePickerFragment();
                newFragment.show(getSupportFragmentManager(), "datePicker");

            }
        });
    }
}

当我点击按钮DatePickerDialog时,显示对话框标题为"set date“,但当我更改日期时,标题包含所选日期而不是"set date”。如何永久设置此对话框标题?

在API 8-10上测试。

提前感谢您,并为我的英语表达歉意。帕特里克

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-10-29 22:46:45

如何扩展DatePickerDialog并添加一个setPermanentTitle方法来存储在日期更改时强制执行的永久标题?

代码语言:javascript
复制
public class MyDatePickerDialog extends DatePickerDialog {

    private CharSequence title;

    public MyDatePickerDialog(Context context, OnDateSetListener callBack, int year, int monthOfYear, int dayOfMonth) {
        super(context, callBack, year, monthOfYear, dayOfMonth);
    }

    public void setPermanentTitle(CharSequence title) {
        this.title = title;
        setTitle(title);
    }

    @Override
    public void onDateChanged(DatePicker view, int year, int month, int day) {
        super.onDateChanged(view, year, month, day);
        setTitle(title);
    }
}

然后使用新的setPermanentTitle方法:

代码语言:javascript
复制
    MyDatePickerDialog dpd = new MyDatePickerDialog(this, null, 2012, 10, 10);
    dpd.setPermanentTitle("set date");
票数 31
EN

Stack Overflow用户

发布于 2013-12-25 20:00:31

扩展DatePickerDialog并覆盖setTitle()方法。

代码语言:javascript
复制
public class MyDatePickerDialog extends DatePickerDialog {

   public MyDatePickerDialog(Context context, OnDateSetListener callBack, int year, int monthOfYear, int dayOfMonth) {
       super(context, callBack, year, monthOfYear, dayOfMonth);
   }

   public void setTitle(CharSequence title) {
       super.setTitle(*<whatever title you want>*);
   }
}
票数 4
EN

Stack Overflow用户

发布于 2015-08-17 19:39:24

您可以始终使用AlertDialog并调用setView来传递DatePicker的实例。

参见下面的示例代码:

代码语言:javascript
复制
DatePicker datePicker = new DatePicker(getActivity());
    datePicker.setCalendarViewShown(false);

new AlertDialog.Builder(getActivity())
    .setTitle("Your title")
    .setView(datePicker)
    .create().show();

这将确保标题仅由您设置。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13123445

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档