时间选择器 - 没有显示对话框
Time Picker - no Dialog showing
晚上好,
今天我正在尝试在 Android Studio 中构建一个时间选择器,为此我观看了 CodingInFlow 的视频。不同之处在于,我在片段中构建时间选择器,这意味着我无法使用 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_width="wrap_content"
android:layout_height="wrap_content"
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_width="wrap_content"
android:layout_height="wrap_content"
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
)我不知道如何在代码中稍后调用这个变量。因为当我键入变量名称时,它带有红色下划线。
在 oncreatview()
方法中,您是 returnig 重复布局。您需要 return fraAla
而不是 inflater.inflate(R.layout.fragment_alarm, container, false);
在 onCreatView()
方法中,您 returnig a return fraAla
而不是 inflater.inflate(R.layout.fragment_alarm, container, false);
因为在 createview 中创建了两个视图引用。
晚上好,
今天我正在尝试在 Android Studio 中构建一个时间选择器,为此我观看了 CodingInFlow 的视频。不同之处在于,我在片段中构建时间选择器,这意味着我无法使用 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_width="wrap_content"
android:layout_height="wrap_content"
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_width="wrap_content"
android:layout_height="wrap_content"
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
)我不知道如何在代码中稍后调用这个变量。因为当我键入变量名称时,它带有红色下划线。
在 oncreatview()
方法中,您是 returnig 重复布局。您需要 return fraAla
而不是 inflater.inflate(R.layout.fragment_alarm, container, false);
在 onCreatView()
方法中,您 returnig a return fraAla
而不是 inflater.inflate(R.layout.fragment_alarm, container, false);
因为在 createview 中创建了两个视图引用。