【问题标题】:how to launch datepicker dialog everytime from action bar navigation menu如何每次从操作栏导航菜单启动日期选择器对话框
【发布时间】:2014-06-12 12:29:17
【问题描述】:

我在我的应用程序中使用操作栏下拉导航列表(模式 ActionBar.NAVIGATION_MODE_LIST)。

我正在尝试在选择其中一项时启动对话框。使用回调来获取位置并可以显示对话框。

public boolean onNavigationItemSelected(int position, long id) {

}

但是当用户没有在对话框上选择任何操作,或者关闭它,或者用户再次选择下拉菜单并选择相同的项目时,我需要再次显示对话框。但是如果再次选择相同的项目,则不会触发“onNavigationItemSelected”。一个

我已经实现了一个自定义 SpinnerAdapter 并覆盖了“getView”(相应项目的标题)和 getDropDownView“(下拉项目)。我可以更改标题,但我想在每次选择特定项目时启动对话框从下拉菜单中。

'Moves' 流行应用使用了类似的方法。启动屏幕在操作栏上有三个选项'今天''昨天''特定日期'。应用程序可以在每次“特定日期”项目时启动(日期选择器对话框)被选中。我正在尝试实现确切的 UI 模式。无法获得如何实现它的线索。

我确实尝试为特定下拉项设置 onClick 侦听器。这有点奏效。 但是在单击设置了 onClick 事件的项目后,下拉菜单没有被关闭。

由于我们吸收了点击事件,框架也不会为该特定项目执行背景状态更改。

在“移动”应用程序上需要注意的一点是,一旦选择了“特定日期”,它不会将所选项目设置为第三个选项,导航仍然保留在前一个所选项目上,仅显示日期选择器对话框.

我尝试实现 onTouch Listener 并基本上吸收了点击事件, 一旦发生第一个触摸事件(ACTION_DOWN),就会启动对话框。单击后它确实关闭了下拉菜单并显示了背景状态更改。但这并不能带来良好的用户体验,因为我们需要在用户完成点击操作时才启动对话框。

            holder.title.setOnTouchListener(new View.OnTouchListener() {
                @Override
                public boolean onTouch(View v, MotionEvent event) {
                    showTimePickerDialog();
                    return false;
                }
            }

想知道移动应用会如何完成。任何见解如何实现这种行为。 ?

【问题讨论】:

    标签: android android-actionbar android-actionmode


    【解决方案1】:

    使用简单的 if

    @Override
    public boolean onNavigationItemSelected(int itemPosition, long itemId) {
        if(itemPosition==0){
         showDialogToday();
        }else if(itemPosition==1){
         showDialogYesterday();
        } else{
           showDialogOtherday();
        }
        return true;
    }
    

    使用对话框代码调用的每个方法都假设很简单......我将它与片段一起使用,这很简单

    【讨论】:

    • 这行不通。一旦您选择“今天”并显示 dialogToday 并关闭对话框,然后再次选择“今天”,您将不会收到“onNavigationItemSelected”回调命中。这就是我要解决的问题。试试看。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 2022-08-04
    • 1970-01-01
    • 1970-01-01
    • 2023-03-02
    • 1970-01-01
    相关资源
    最近更新 更多