gpt4 book ai didi

java - 为什么我在 android 4.0.3 中收到 TimePicker NullPointerException?

转载 作者:行者123 更新时间:2023-12-02 04:59:35 25 4
gpt4 key购买 nike

我有一个类,它显示一个间隔为 10 分钟的时间选择器:

public class TimePickerFragment extends DialogFragment
implements TimePickerDialog.OnTimeSetListener {

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
final Calendar c = Calendar.getInstance();
int hour = c.get(Calendar.HOUR_OF_DAY);
// Convert current minutes to tens
// 55 = 50, 56 = 00
int minute = c.get(Calendar.MINUTE) / 10;
minute = (minute > 5) ? 0 : minute;

final TimePickerDialog tpd = new TimePickerDialog(getActivity(), this, hour, minute,
DateFormat.is24HourFormat(getActivity()));

tpd.setOnShowListener(new DialogInterface.OnShowListener() {
@Override
public void onShow(DialogInterface dialog) {
int tpLayoutId = getResources().getIdentifier("timePickerLayout", "id", "android");

ViewGroup tpLayout = (ViewGroup) tpd.findViewById(tpLayoutId);
ViewGroup layout = (ViewGroup) tpLayout.getChildAt(0);

// Customize minute NumberPicker
NumberPicker minutePicker = (NumberPicker) layout.getChildAt(2);
minutePicker.setDisplayedValues(new String[]{"00", "10", "20", "30", "40", "50"});
minutePicker.setMinValue(0);
minutePicker.setMaxValue(5);
}
});

return tpd;

}

public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
minute = minute * 10;
// Do something with the time chosen by the user
final String selectedDate = String.valueOf(hourOfDay) + ":" + String.valueOf(minute);
EditText selectedTimeTxt = (EditText) getActivity().findViewById(R.id.selectedTime);
selectedTimeTxt.setText(selectedDate);
}
}

该代码在 android Lollipop 上完美运行,但是当我在模拟器上运行它或运行 android 4.0.3 的真实设备时,它会抛出以下异常:

java.lang.NullPointerException 关于此行:ViewGroup layout = (ViewGroup) tpLayout.getChildAt(0);

错误非常明显,但我看不到布局组件 ID,因为 API 15 不支持设备监视器中的屏幕捕获。

你能帮我推一下吗?为什么我会收到此错误?我缺少的布局 ID 是什么?我很确定许多开发人员都面临着同样的问题。我知道我在这里遗漏了一个非常小的部分,但我无法发现它。

最佳答案

其实问题就在这里:

int tpLayoutId = getResources().getIdentifier("timePickerLayout", "id", "android");

API-15 中没有可用的名为 timePickerLayout 的内部标识符。

因此,tpLayoutId0,这使得您的 tpLayout 等于 null;在 null 对象上调用方法会抛出 NullPointerException 。

建议:不要依赖 Android 的内部资源声明,因为它们被设为私有(private)是有原因的。

关于java - 为什么我在 android 4.0.3 中收到 TimePicker NullPointerException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28409524/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com