-1

我在我的应用程序中使用 Actionbar 下拉导航列表(模式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;
                }
            }

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

在此处输入图像描述

4

1 回答 1

0

使用简单的 if

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

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

于 2014-06-09T03:58:29.097 回答