首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果CheckBox IsChecked,则为TimePicker

如果CheckBox IsChecked,则为TimePicker
EN

Stack Overflow用户
提问于 2013-05-12 03:34:04
回答 2查看 322关注 0票数 0

我试着在时间选择器对话框中放一个CheckBox放在时间选择器上面,只要它被选中,时间选择器就会工作。

我尝试在TimePickerFragment(onCreateDialog)中创建CheckBox,它将复选框放在主活动中,而不是放在时间对话框中。TimePickerFragment:

代码语言:javascript
复制
public class TimePickerFragment extends DialogFragment implements TimePickerDialog.OnTimeSetListener {
    private MyAlarmReceiver alarm;
    //final CheckBox chk=null;
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        // Use the current time as the default values for the picker
        final Calendar c = Calendar.getInstance();
        int hour = c.get(Calendar.HOUR_OF_DAY);
        int minute = c.get(Calendar.MINUTE);

        final CheckBox chk = (CheckBox) getActivity().findViewById(R.id.chk);
        if (chk.isChecked()) {
            chk.setChecked(false);
        }
        // Create a new instance of TimePickerDialog and return it
        return new TimePickerDialog(getActivity(), this, hour, minute,
                DateFormat.is24HourFormat(getActivity()));
    }

    public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
        Context con = getActivity();
        MainActivity.hour = hourOfDay;
        MainActivity.min = minute;
        //Toast.makeText(con, "TimeGet: "+MainActivity.hour+","+MainActivity.min, Toast.LENGTH_LONG).show();
        alarm = new MyAlarmReceiver();
        if(alarm != null){alarm.setOnetimeTimer(con);}
        else
            Toast.makeText(con, "Alarm is null", Toast.LENGTH_SHORT).show();
    }
}

Main_activity.xml:

代码语言:javascript
复制
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/layout"
    android:background="@drawable/back" >
    <CheckBox
        android:id="@+id/chk"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/chk" 
        android:checked="true"/>
    </RelativeLayout>

知道为什么吗?谢谢!

EN

回答 2

Stack Overflow用户

发布于 2013-05-12 03:42:52

没有针对片段的findViewById()方法,因此出现错误。

由于您似乎希望获取活动复选框的引用,因此获取活动实例然后调用findViewById()应该会得到所需的结果:

代码语言:javascript
复制
final CheckBox chk = (CheckBox) getActivity().findViewById(R.id.chk);
if (chk.isChecked()) {
     chk.setChecked(false);
}

正如ChriZzZ提到的,不可达代码是您应该遇到的另一个编译器错误。

票数 2
EN

Stack Overflow用户

发布于 2013-05-12 03:38:45

我非常确定您会收到一个警告/错误,上面写着:无法访问代码。

您返回,因此甚至在到达findViewById之前就离开了该方法。

代码语言:javascript
复制
// Create a new instance of TimePickerDialog and return it
return new TimePickerDialog(getActivity(), this, hour, minute,
    DateFormat.is24HourFormat(getActivity()));

final CheckBox chk = (CheckBox) findViewById(R.id.chk);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16500984

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档