如何从操作栏导航菜单中每次启动datepicker对话框

时间:2014-06-09 01:50:04

标签: android android-actionbar android-actionmode

我在我的应用中使用了Actionbar下拉导航列表(模式 ActionBar.NAVIGATION_MODE_LIST )。

我正在尝试启动其中一个项目的对话框。使用回调来获取位置并显示对话框。

public boolean onNavigationItemSelected(int position, long id) {

}

但是当用户没有在对话框上选择任何操作或将其解除时,或者用户再次选择下拉菜单并选择相同的项目时,我需要再次显示该对话框。但如果再次选择相同的项目,则不会触发' onNavigationItemSelected '。甲

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

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

我确实尝试为特定的下拉项设置onClick侦听器。它有点工作。 但是在点击了设置onClick事件的项目后,下拉菜单没有被删除。

由于我们吸收了click事件,因此框架也不会对该特定项执行背景状态更改。

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

我尝试实现onTouch Listener,基本上dint吸收了click事件, 在第一次触摸事件发生后立即启动对话框(ACTION_DOWN)。点击后它确实关闭了下拉菜单并显示了背景状态变化。但它并没有带来良好的用户体验,因为我们只有在用户完成点击操作时才需要启动对话框。

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

想知道应用程序将如何移动。任何见解如何实现这种行为。 ?

enter image description here

1 个答案:

答案 0 :(得分:0)

使用简单的if

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

使用对话框代码调用的每个方法都很容易......我用一个片段来使用它,这很简单