自定义对话框数(日期和时间选择器)与有关单选按钮 [英] Number of Custom Dialogs (Date and Time Picker) with relation to Radio Buttons

查看:126
本文介绍了自定义对话框数(日期和时间选择器)与有关单选按钮的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一组单选按钮,如下图所示的code按钮。当我点击每一个单选按钮,我希望有一个不同的对话框如下图所示。一是图片为每个无线button.These应该在对话框。我该怎么做呢? 在结束所有我需要的是产生这些自定义对话框。可以任何帮助我我该怎么办呢?

另外,我得到一个空指针异常。如何解决这个问题呢?

 公共类可用性扩展活动实现OnClickListener,
        OnCheckedChangeListener {
    切换按钮覆盖;
    TextView的状态;
    按钮Overridestatus;
    为CharSequence []选择= {RemoteOffice,办公室,个人移动,
            家,手机,临时,请勿打扰,
            远程工作,非工作日,工作日};
    RadioGroup中timeperiod;
    TimePicker timePicker;
    诠释小时,分钟;

    @覆盖
    保护无效的onCreate(包savedInstanceState){
        // TODO自动生成方法存根
        super.onCreate(savedInstanceState);
        的setContentView(R.layout.availability);
        覆盖=(切换按钮)findViewById(R.id.tbOver);
        override.setOnClickListener(本);
        状态=(TextView中)findViewById(R.id.tvstatus);
        Overridestatus =(按钮)findViewById(R.id.bstatus);
        Overridestatus.setOnClickListener(本);
        timeperiod =(RadioGroup中)findViewById(R.id.rgtimeperiod);
        timeperiod.setOnCheckedChangeListener(本);
        timePicker =(TimePicker)findViewById(R.id.timePicker);
        timePicker.setIs24HourView(真正的);

    }

    公共无效的onClick(视图查看){
        // TODO自动生成方法存根
        开关(view.getId()){
        案例R.id.tbOver:

            如果(override.isChecked()){

                status.setText(覆盖);
                Overridestatus.setText(个人移动);

            } 其他 {
                status.setText(目​​前);
                Overridestatus.setText(使用计划 - 请勿打扰);

            }
            打破;

        案例R.id.bstatus:

        {
            如果(override.isChecked()){
                的ShowDialog(0);
            }
        }

            打破;
        案例R.id.rhrandmin:
        }
    }

    @覆盖
    受保护的对话框onCreateDialog(INT ID){
        // TODO自动生成方法存根
        开关(ID){
        情况下0:
            AlertDialog.Builder建设者=新AlertDialog.Builder(本);
            builder.setTitle(选择系统服务器);
            builder.setIcon(R.drawable.ic_btn_round_mo​​re_normal);
            builder.setPositiveButton(OK,
                    新DialogInterface.OnClickListener(){

                        公共无效的onClick(DialogInterface对话框,INT ID){
                            // TODO自动生成方法存根
                            意图菜单=新的意图(Availability.this,
                                    MenuScreen.class);
                            startActivity(菜单);

                        }
                    });
            builder.setNegativeButton(CANCEL,
                    新DialogInterface.OnClickListener(){

                        公共无效的onClick(DialogInterface对话,诠释它){
                            // TODO自动生成方法存根

                        }
                    });

            builder.setSingleChoiceItems(选择,-1,
                    新DialogInterface.OnClickListener(){

                        公共无效的onClick(DialogInterface对话,诠释项){
                            // TODO自动生成方法存根

                        }
                    });

            builder.create();
            builder.show();
            打破;
        案例2:
             新TimePickerDialog(这一点,mTimeSetListener,小时,分钟,FALSE);
            打破;
        }

        返回null;

    }

    私人TimePickerDialog.OnTimeSetListener mTimeSetListener =新TimePickerDialog.OnTimeSetListener(){
        公共无效onTimeSet(TimePicker观点,诠释hourOfDay,诠释minuteOfHour){
            小时= hourOfDay;
            分钟= minuteOfHour;
            Toast.makeText(getBaseContext(),
                    您已选择:+小时+:+分钟,
                    Toast.LENGTH_SHORT).show();
        }
    };

    公共无效onCheckedChanged(RadioGroup中组,诠释checkedId){
        // TODO自动生成方法存根
        开关(checkedId){
        案例R.id.ridefinate:

            打破;

        案例R.id.rdays:

            打破;
        案例R.id.rhrandmin:
        //的ShowDialog(2);
            打破;
        案例R.id.rtilldate:
             的ShowDialog(1);
            打破;
        }
    }

}
 

LOG CAT

  10-16 19:16:16.567:E / AndroidRuntime(1137):致命异常:主要
10-16 19:16:16.567:E / AndroidRuntime(1137):java.lang.RuntimeException的:无法启动的活动ComponentInfo {com.example.avst.callx pressmobile / com.example.avst.callx pressmobile.Availability}:显示java.lang.NullPointerException
10-16 19:16:16.567:E / AndroidRuntime(1137):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
10-16 19:16:16.567:E / AndroidRuntime(1137):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
10-16 19:16:16.567:E / AndroidRuntime(1137):在android.app.ActivityThread.access $ 600(ActivityThread.java:130)
10-16 19:16:16.567:E / AndroidRuntime(1137):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1195)
10-16 19:16:16.567:E / AndroidRuntime(1137):在android.os.Handler.dispatchMessage(Handler.java:99)
10-16 19:16:16.567:E / AndroidRuntime(1137):在android.os.Looper.loop(Looper.java:137)
10-16 19:16:16.567:E / AndroidRuntime(1137):在android.app.ActivityThread.main(ActivityThread.java:4745)
10-16 19:16:16.567:E / AndroidRuntime(1137):在java.lang.reflect.Method.invokeNative(本机方法)
10-16 19:16:16.567:E / AndroidRuntime(1137):在java.lang.reflect.Method.invoke(Method.java:511)
10-16 19:16:16.567:E / AndroidRuntime(1137):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:786)
10-16 19:16:16.567:E / AndroidRuntime(1137):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
10-16 19:16:16.567:E / AndroidRuntime(1137):在dalvik.system.NativeStart.main(本机方法)
10-16 19:16:16.567:E / AndroidRuntime(1137):由:显示java.lang.NullPointerException
10-16 19:16:16.567:E / AndroidRuntime(1137):在com.example.avst.callx pressmobile.Availability.onCreate(Availability.java:47)
10-16 19:16:16.567:E / AndroidRuntime(1137):在android.app.Activity.performCreate(Activity.java:5008)
10-16 19:16:16.567:E / AndroidRuntime(1137):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
10-16 19:16:16.567:E / AndroidRuntime(1137):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
10-16 19:16:16.567:E / AndroidRuntime(1137):11 ...更多
 

解决方案

Android的提供了两个非标准的对话框。 DatePickerDialog TimePickerDialog 。如果你想创建自定义对话框看到指南rel="nofollow">。

I have a group of radio buttons as shown in the code button below. When I click each a radio button , I want a different dialog as shown in the picture below .One for each radio button.These should be in dialogs. How do I do this? At the end All I need is to generate these Custom Dialogs. Can any help me how I can do it?

Also I am getting a null pointer exception. How do I solve it??

public class Availability extends Activity implements OnClickListener,
        OnCheckedChangeListener {
    ToggleButton override;
    TextView status;
    Button Overridestatus;
    CharSequence[] choice = { "RemoteOffice", "Office", "Personal mobile",
            "Home", "Mobile", "Temporary", "Do not Disturb",
            "Working Remotely", "Non work day", "Work Day" };
    RadioGroup timeperiod;
    TimePicker timePicker;
    int hour, minute;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.availability);
        override = (ToggleButton) findViewById(R.id.tbOver);
        override.setOnClickListener(this);
        status = (TextView) findViewById(R.id.tvstatus);
        Overridestatus = (Button) findViewById(R.id.bstatus);
        Overridestatus.setOnClickListener(this);
        timeperiod = (RadioGroup) findViewById(R.id.rgtimeperiod);
        timeperiod.setOnCheckedChangeListener(this);
        timePicker = (TimePicker) findViewById(R.id.timePicker);
        timePicker.setIs24HourView(true);

    }

    public void onClick(View view) {
        // TODO Auto-generated method stub
        switch (view.getId()) {
        case R.id.tbOver:

            if (override.isChecked()) {

                status.setText("Override");
                Overridestatus.setText("Personal Mobile");

            } else {
                status.setText("Currently");
                Overridestatus.setText("Use Schedule - Do Not Disturb");

            }
            break;

        case R.id.bstatus:

        {
            if (override.isChecked()) {
                showDialog(0);
            }
        }

            break;
        case R.id.rhrandmin:
        }
    }

    @Override
    protected Dialog onCreateDialog(int id) {
        // TODO Auto-generated method stub
        switch (id) {
        case 0:
            AlertDialog.Builder builder = new AlertDialog.Builder(this);
            builder.setTitle("Select System Server");
            builder.setIcon(R.drawable.ic_btn_round_more_normal);
            builder.setPositiveButton("OK",
                    new DialogInterface.OnClickListener() {

                        public void onClick(DialogInterface dialog, int id) {
                            // TODO Auto-generated method stub
                            Intent menu = new Intent(Availability.this,
                                    MenuScreen.class);
                            startActivity(menu);

                        }
                    });
            builder.setNegativeButton("CANCEL",
                    new DialogInterface.OnClickListener() {

                        public void onClick(DialogInterface dialog, int which) {
                            // TODO Auto-generated method stub

                        }
                    });

            builder.setSingleChoiceItems(choice, -1,
                    new DialogInterface.OnClickListener() {

                        public void onClick(DialogInterface dialog, int item) {
                            // TODO Auto-generated method stub

                        }
                    });

            builder.create();
            builder.show();
            break;
        case 2:
             new TimePickerDialog(this, mTimeSetListener, hour, minute,false);
            break;
        }

        return null;

    }

    private TimePickerDialog.OnTimeSetListener mTimeSetListener = new TimePickerDialog.OnTimeSetListener() {
        public void onTimeSet(TimePicker view, int hourOfDay, int minuteOfHour) {
            hour = hourOfDay;
            minute = minuteOfHour;
            Toast.makeText(getBaseContext(),
                    "You have selected : " + hour + ":" + minute,
                    Toast.LENGTH_SHORT).show();
        }
    };

    public void onCheckedChanged(RadioGroup group, int checkedId) {
        // TODO Auto-generated method stub
        switch (checkedId) {
        case R.id.ridefinate:

            break;

        case R.id.rdays:

            break;
        case R.id.rhrandmin:
        //  showDialog(2);
            break;
        case R.id.rtilldate:
             showDialog(1);
            break;
        }
    }

}

LOG CAT

10-16 19:16:16.567: E/AndroidRuntime(1137): FATAL EXCEPTION: main
10-16 19:16:16.567: E/AndroidRuntime(1137): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.avst.callxpressmobile/com.example.avst.callxpressmobile.Availability}: java.lang.NullPointerException
10-16 19:16:16.567: E/AndroidRuntime(1137):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
10-16 19:16:16.567: E/AndroidRuntime(1137):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
10-16 19:16:16.567: E/AndroidRuntime(1137):     at android.app.ActivityThread.access$600(ActivityThread.java:130)
10-16 19:16:16.567: E/AndroidRuntime(1137):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
10-16 19:16:16.567: E/AndroidRuntime(1137):     at android.os.Handler.dispatchMessage(Handler.java:99)
10-16 19:16:16.567: E/AndroidRuntime(1137):     at android.os.Looper.loop(Looper.java:137)
10-16 19:16:16.567: E/AndroidRuntime(1137):     at android.app.ActivityThread.main(ActivityThread.java:4745)
10-16 19:16:16.567: E/AndroidRuntime(1137):     at java.lang.reflect.Method.invokeNative(Native Method)
10-16 19:16:16.567: E/AndroidRuntime(1137):     at java.lang.reflect.Method.invoke(Method.java:511)
10-16 19:16:16.567: E/AndroidRuntime(1137):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
10-16 19:16:16.567: E/AndroidRuntime(1137):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
10-16 19:16:16.567: E/AndroidRuntime(1137):     at dalvik.system.NativeStart.main(Native Method)
10-16 19:16:16.567: E/AndroidRuntime(1137): Caused by: java.lang.NullPointerException
10-16 19:16:16.567: E/AndroidRuntime(1137):     at com.example.avst.callxpressmobile.Availability.onCreate(Availability.java:47)
10-16 19:16:16.567: E/AndroidRuntime(1137):     at android.app.Activity.performCreate(Activity.java:5008)
10-16 19:16:16.567: E/AndroidRuntime(1137):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
10-16 19:16:16.567: E/AndroidRuntime(1137):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
10-16 19:16:16.567: E/AndroidRuntime(1137):     ... 11 more

解决方案

Android provides two standart dialogs. DatePickerDialog and TimePickerDialog. If you want to create custom dialog see this guide.

这篇关于自定义对话框数(日期和时间选择器)与有关单选按钮的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆