TimePickerDialog中的onClick没有响应

问题描述 投票:0回答:1

我想要一个

ListView
,我可以在其中单击单个项目。
TimePickerDialog
应该出现并让用户选择时间并确认他的选择。所以我为此使用了
setButton(BUTTON_POSITIVE, ...)
。该对话框按预期打开,但如果我单击两个按钮中的任何一个,该对话框将直接关闭,不会留下任何消息,除了:

sendCancelIfRunning:isInProgress=falsecallback=android.view.ViewRootImpl$$ExternalSyntheticLambda17@a929e50

按钮单击

Log.d(TAG, "onClick: Confirmed")
永远不会被记录,调试器也永远不会进入
onClick()
TimePickerDialog

public class AddStopActivity extends Activity {
    [...]
    @Override
    public void onCreate(Bundle savedInstanceState) {

        [...]

        ListView listView = findViewById(R.id.listview);
        SearchView searchView = findViewById(R.id.addStopSearch);
        arrayAdapter = new ArrayAdapter<>(getApplicationContext(), R.layout.medium_text_list_item, busStops);
        listView.setAdapter(arrayAdapter);
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int pos, long id) {
                final Calendar myCalender = Calendar.getInstance();
                int hour = myCalender.get(Calendar.HOUR_OF_DAY);
                int minute = myCalender.get(Calendar.MINUTE);
                TimePickerDialog.OnTimeSetListener timeListener = (v, hourOfDay, minuteOfDay) -> {
                    if (view.isShown()) {
                        myCalender.set(Calendar.HOUR_OF_DAY, hourOfDay);
                        myCalender.set(Calendar.MINUTE, minuteOfDay);

                    }
                };
                TimePickerDialog timePickerDialog = new TimePickerDialog(AddStopActivity.this, android.R.style.Theme_Holo, timeListener, hour, minute, true);
                timePickerDialog.setTitle(R.string.dialog_select_time);
                timePickerDialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);

                int width = (int)(getResources().getDisplayMetrics().widthPixels*0.40);
                int height = (int)(getResources().getDisplayMetrics().heightPixels*0.40);
                timePickerDialog.getWindow().setLayout(width, height);
                timePickerDialog.setButton(BUTTON_POSITIVE, "Confirm", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Log.d(TAG, "onClick: Confirmed");
                        dialog.dismiss();
                    }
                });
                timePickerDialog.show();
            }
        });
[...]
}

我尝试记录和调试 ButtonClick,但没有显示任何关于要做什么的提示。我也尝试在

setButton()
之后打电话给
show()
,但也没有任何反应。

android onclick timepickerdialog
1个回答
0
投票

您不必在设置按钮的行上执行此操作。

相反,请尝试在“OnTimeSetListener()”中单击“确认”按钮时执行您想要执行的操作。

//...
                TimePickerDialog.OnTimeSetListener timeListener = (v, hourOfDay, minuteOfDay) -> {
                    if (view.isShown()) {
                        myCalender.set(Calendar.HOUR_OF_DAY, hourOfDay);
                        myCalender.set(Calendar.MINUTE, minuteOfDay);

                    }
                    Log.d(TAG, "Time selected: " + hourOfDay + ":" + minuteOfDay);

                };

//...

                timePickerDialog.setButton(BUTTON_POSITIVE, "Confirm", timePickerDialog);

//...

日志:

Time selected: 18:10
© www.soinside.com 2019 - 2024. All rights reserved.