时间选择器 - 没有显示对话框

Posted

技术标签:

【中文标题】时间选择器 - 没有显示对话框【英文标题】:Time Picker - no Dialog showing 【发布时间】:2019-01-29 23:27:22 【问题描述】:

晚上好, 今天我正在尝试在 android Studio 中构建一个时间选择器,为此我观看了 CodingInFlow 的视频。不同之处在于,我在 Fragment 中构建时间选择器,这意味着我无法使用 getSupportFragmentManager。好吧,我做对了,但是在单击按钮之后,时间选择器应该显示没有任何反应,时间选择器没有显示,就像按钮甚至没有 OnClick 一样。我认为这可能与getSupportFragmentManager 的事情有关。我想向您展示我的代码。

AlarmFragment.java:

    @Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) 
    final View fraAla = inflater.inflate(R.layout.fragment_alarm, container, false);


    Button bAlarm = fraAla.findViewById(R.id.buttonAlarm);
    bAlarm.setOnClickListener(new View.OnClickListener() 
        @Override
        public void onClick(View v) 
            DialogFragment zeitwaehlen = new AlarmTimePicker();
            zeitwaehlen.show(getFragmentManager(), "time picker");
        
    );
    return inflater.inflate(R.layout.fragment_alarm, container, false);


@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) 
    TextView txtAlarm = getActivity().findViewById(R.id.textViewAlarm);
    txtAlarm.setText("Stunde: " + hourOfDay + " Minute: " + minute);


AlarmTimePicker.java:

    @NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) 
    Calendar k = Calendar.getInstance();
    int stunde = k.get(Calendar.HOUR_OF_DAY);
    int minute = k.get(Calendar.MINUTE);

    return new TimePickerDialog(getActivity(),(TimePickerDialog.OnTimeSetListener) getActivity(), stunde, minute, DateFormat.is24HourFormat(getActivity()));

fragment_alarm.xml:

    <TextView
    android:id="@+id/textViewAlarm"
    android:layout_
    android:layout_
    android:layout_above="@id/buttonAlarm"
    android:layout_centerHorizontal="true"
    android:layout_marginBottom="31dp"
    android:text="time"
    android:textSize="30sp" />

<Button
    android:id="@+id/buttonAlarm"
    android:layout_
    android:layout_
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:text="open time picker" />

当我尝试写 getSupportFragmentManager 时,应用程序崩溃了。 我也试着像这里的这个人说的那样做:How can I access getSupportFragmentManager() in a fragment? 但由于我是编码新手,我并没有真正理解他的意思FragmentManager fragManager = myContext.getSupportFragmentManager(); 我知道他创建了一个新变量,但是当我尝试做同样的事情时(当然我更改了myContext),我不知道以后如何在代码中调用这个变量。因为当我输入变量的名称时,它带有红色下划线。

【问题讨论】:

【参考方案1】:

oncreatview() 方法中,您将返回一个重复的布局。您需要返回fraAla 而不是inflater.inflate(R.layout.fragment_alarm, container, false);

【讨论】:

【参考方案2】:

onCreatView() 方法中,您返回的是fraAla 而不是inflater.inflate(R.layout.fragment_alarm, container, false);

因为在 createview 中创建了两个视图的引用。

【讨论】:

以上是关于时间选择器 - 没有显示对话框的主要内容,如果未能解决你的问题,请参考以下文章

当前时间选择器

即时运行后未显示设备选择器对话框

渲染 rhandsontable 后,日期选择器显示在模态对话框后面

Android:时间选择器和日期选择器在同一个对话框中

棒棒糖[微调器模式]中没有日历可视化的日期选择器对话框?

如何从地点选择器活动中检索地图快照?