0

我有一个简单的应用程序,使用对话框进行除法、减法等,操作员循环条件

我的错误

02-08 17:29:23.271: W/KeyCharacterMap(744): No keyboard for id 0
02-08 17:29:23.271: W/KeyCharacterMap(744): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
02-08 17:29:24.011: D/dalvikvm(744): GC_EXTERNAL_ALLOC freed 72K, 52% free 2611K/5379K, external 914K/1038K, paused 59ms
02-08 17:29:26.101: W/KeyCharacterMap(744): No keyboard for id 0
02-08 17:29:26.101: W/KeyCharacterMap(744): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
02-08 17:29:30.311: D/AndroidRuntime(744): Shutting down VM
02-08 17:29:30.311: W/dalvikvm(744): threadid=1: thread exiting with uncaught exception (group=0x40015560)
02-08 17:29:30.321: E/AndroidRuntime(744): FATAL EXCEPTION: main
02-08 17:29:30.321: E/AndroidRuntime(744): java.lang.NullPointerException
02-08 17:29:30.321: E/AndroidRuntime(744):  at com.example.dialog_looping.MainActivity$1$1$1.onClick(MainActivity.java:72)
02-08 17:29:30.321: E/AndroidRuntime(744):  at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:159)
02-08 17:29:30.321: E/AndroidRuntime(744):  at android.os.Handler.dispatchMessage(Handler.java:99)
02-08 17:29:30.321: E/AndroidRuntime(744):  at android.os.Looper.loop(Looper.java:123)
02-08 17:29:30.321: E/AndroidRuntime(744):  at android.app.ActivityThread.main(ActivityThread.java:3683)
02-08 17:29:30.321: E/AndroidRuntime(744):  at java.lang.reflect.Method.invokeNative(Native Method)
02-08 17:29:30.321: E/AndroidRuntime(744):  at java.lang.reflect.Method.invoke(Method.java:507)
02-08 17:29:30.321: E/AndroidRuntime(744):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
02-08 17:29:30.321: E/AndroidRuntime(744):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
02-08 17:29:30.321: E/AndroidRuntime(744):  at dalvik.system.NativeStart.main(Native Method)
02-08 17:34:30.490: I/Process(744): Sending signal. PID: 744 SIG: 9

这是我的完整代码使用对话框循环进行减法、除法等......

public class MainActivity extends Activity {
    int result=0,i;
    int [] arr;
    int indexArray = 0;
    String Oprtr;
    RadioGroup operator_mode;
    RadioButton rb;
    @Override  
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        final LayoutInflater inflater = this.getLayoutInflater();
        final View v=inflater.inflate(R.layout.dialoginput, null);

        operator_mode=(RadioGroup)findViewById(R.id.operator);


        //operator_mode.setOnClickListener(l)(null);

        new AlertDialog.Builder(MainActivity.this)
            .setIcon(R.drawable.ic_launcher)
            .setTitle("Total Operator")
            .setView(v)
            .setPositiveButton("Ok", new DialogInterface.OnClickListener() {

                 public void onClick(final DialogInterface dialog, int whichButton) {
                      EditText op = (EditText)v.findViewById(R.id.operator);
                      arr=new int [Integer.valueOf(op.getText().toString())+1];
                      for (i = 0;i<arr.length;i++){


                            LayoutInflater inflater = MainActivity.this.getLayoutInflater();
                            final View v2=inflater.inflate(R.layout.input, null) ;

                            new AlertDialog.Builder(MainActivity.this)
                                .setIcon(R.drawable.ic_launcher)
                                .setTitle("number:")
                                .setView(v2)
                                .setPositiveButton("Ok", new DialogInterface.OnClickListener() {
                                    public void onClick(DialogInterface dlg, int sumthin) {

                                        EditText number = (EditText)v2.findViewById(R.id.number);
                                        arr[indexArray]= Integer.valueOf(number.getText().toString());
                                        //Log.v ("aa",Integer.toString(arr[indexArray]));

                                        LayoutInflater inflater = MainActivity.this.getLayoutInflater();
                                        final View v3=inflater.inflate(R.layout.operator, null) ;

                                        new AlertDialog.Builder(MainActivity.this)
                                        .setIcon(R.drawable.ic_launcher)
                                        .setTitle("select Operator:")
                                        .setView(v3)
                                        .setPositiveButton("Ok", new DialogInterface.OnClickListener() {
                                            public void onClick(DialogInterface dlg, int sumthin) {
                                                sumthin = operator_mode.getCheckedRadioButtonId();
                                                rb = (RadioButton) findViewById(sumthin);
                                                switch(sumthin){
                                                case R.id.plus:
                                                    Oprtr = "+";
                                                    Log.v ("aa",Oprtr);
                                                    /*
                                                    if (indexArray==0){
                                                        result = arr[indexArray];
                                                        if (result<0){
                                                            new AlertDialog.Builder(MainActivity.this)
                                                                .setTitle("Error")
                                                                .setMessage("result can't negative value")
                                                                .setNeutralButton("Close", new DialogInterface.OnClickListener() {
                                                                    public void onClick(DialogInterface dlg, int sumthin) {
                                                                        finish();
                                                                    }
                                                                })
                                                                .show();
                                                            } else if (result>9999999){
                                                                new AlertDialog.Builder(MainActivity.this)
                                                                .setTitle("Error")
                                                                .setMessage("result can't > 9999999")
                                                                .setNeutralButton("Close", new DialogInterface.OnClickListener() {
                                                                    public void onClick(DialogInterface dlg, int sumthin) {
                                                                        finish();
                                                                    }
                                                                })
                                                                .show();
                                                            }else {
                                                                new AlertDialog.Builder(MainActivity.this)
                                                                .setTitle("result")
                                                                .setMessage(Integer.toString(result))
                                                                .setNeutralButton("Close", new DialogInterface.OnClickListener() {
                                                                    public void onClick(DialogInterface dlg, int sumthin) {
                                                                    }
                                                                })
                                                                .show();
                                                            }
                                                    } else {
                                                            result = result + arr[indexArray];
                                                            if (result<0){
                                                            new AlertDialog.Builder(MainActivity.this)
                                                                .setTitle("Error")
                                                                .setMessage("result can't negative value")
                                                                .setNeutralButton("Close", new DialogInterface.OnClickListener() {
                                                                    public void onClick(DialogInterface dlg, int sumthin) {
                                                                        finish();
                                                                    }
                                                                })
                                                                .show();
                                                            } else if (result>9999999){
                                                                new AlertDialog.Builder(MainActivity.this)
                                                                .setTitle("Error")
                                                                .setMessage("result can't > 9999999")
                                                                .setNeutralButton("Close", new DialogInterface.OnClickListener() {
                                                                    public void onClick(DialogInterface dlg, int sumthin) {
                                                                        finish();
                                                                    }
                                                                })
                                                                .show();
                                                            }else {
                                                                new AlertDialog.Builder(MainActivity.this)
                                                                .setTitle("result")
                                                                .setMessage(Integer.toString(result))
                                                                .setNeutralButton("Close", new DialogInterface.OnClickListener() {
                                                                    public void onClick(DialogInterface dlg, int sumthin) {
                                                                    }
                                                                })
                                                                .show();
                                                            }
                                                    }                                   
                                                    indexArray++;
                                                    */
                                                    break;
                                                case R.id.minus:
                                                    //str="Meeting Mode";
                                                    break;
                                                case R.id.substract:
                                                    //str="Silent Mode";
                                                    break;
                                                case R.id.divide:
                                                    //str="Offline Mode";
                                                    break;
                                            }
                                            }
                                        })
                                        .show();
                                    }
                                })
                                .show();
                        }
                 }
            })

            .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
              public void onClick(DialogInterface dialog, int whichButton) {
                 finish();
              }
            })
            .show();
    }
}

我的代码哪里出错了?

请帮助我。谢谢

4

1 回答 1

0

RadioGroup是空的,我相信。您需要设置视图

setContentView(R.layout.your_view)

然后,如果您需要膨胀视图,请使用:

operator_mode=(RadioGroup)v.findViewById(R.id.operator);

代替

operator_mode=(RadioGroup)findViewById(R.id.operator);

编辑

您可以使用充气机,但您必须执行以下操作:

Window window = getWindow();

    window.setContentView(v);`

但你还在打电话setContentView()

于 2013-02-08T18:05:47.230 回答