Android:交换机案例的致命异常

时间:2011-06-21 13:34:42

标签: android fatal-error switch-statement

我在register()方法上方添加了一个switch case,我收到了Fatal异常,如果我删除了switch case,它的工作正常。如果我在寄存器方法中使用onclicklistner它也适用于我,但我想实现开关盒,我该怎么做?

提前致谢...!

这是我的代码。

Thread t;
ProgressDialog dialog;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    Button signin = (Button) findViewById(R.id.regsubmitbtn);

    signin.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            showDialog(0);
            t = new Thread() {
                public void run() {
                    register();
                }
            };
            t.start();
        }
    });
}

@Override
protected Dialog onCreateDialog(int id) {
    switch (id) {
    case 0: {
        dialog = new ProgressDialog(this);
        dialog.setMessage("Please wait while connecting...");
        dialog.setIndeterminate(true);
        dialog.setCancelable(true);
        return dialog;
    }
    }
    return null;
}


        Button signin = (Button) findViewById(R.id.regsubmitbtn);

    signin.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            showDialog(0);
            t = new Thread() {
                public void run() {
                    register();
                }
            };
            t.start();
        }
    });
}


        String gender; 
    Button regmalebtn = (Button) findViewById(R.id.regmalebtn);
      Button regfemalebtn = (Button) findViewById(R.id.regfemalebtn);
         // Here in the above line I m getting the error//
      public void onClick(View v) {

          switch(v.getId()){

          case R.id.regmalebtn:

          gender = regmalebtn.getText().toString();
            gender.equals("M");
        //  request.addProperty("gender",gender );

               break;

          case R.id.regfemalebtn: 

             gender = regfemalebtn.getText().toString();
                gender.equals("F");
            //  request.addProperty("gender", gender);
               break;
          default:
              break;

          }
          } 


public void register() {
    Log.v(TAG, "Trying to Login");


      EditText etxt_user = (EditText) findViewById(R.id.regetfirstname);
      EditText etxt_pass = (EditText) findViewById(R.id.regetlastname);
      EditText etxt_dob = (EditText) findViewById(R.id.regetdob); 
             // in the above line i m getting error//
      EditText etxt_email = (EditText) findViewById(R.id.regetemail); 
      EditText  etxt_password = (EditText) findViewById(R.id.regetpwd);
      EditText  etxt_confirmpassword = (EditText) findViewById(R.id.regetrepwd);
      EditText  etxt_mobno = (EditText) findViewById(R.id.regetmobno);
          Button regmalebtn = (Button) findViewById(R.id.regmalebtn);
                 // in the above line I m getting the error//
       Button regfemalebtn = (Button) findViewById(R.id.regfemalebtn);
    //  String deviceid = null;
      String fname = etxt_user.getText().toString();
      String lname = etxt_pass.getText().toString();
      String dob = etxt_dob.getText().toString(); 
      String contact = etxt_mobno.getText().toString();


      String password;
      String confirmpassword ;
      String email =  etxt_email.getText().toString(); 
      password =  etxt_password.getText().toString(); 
      confirmpassword =  etxt_confirmpassword.getText().toString();



     final SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
    SoapSerializationEnvelope soapEnvelope = new  SoapSerializationEnvelope(SoapEnvelope.VER12); 
                // in the above line I m getting errors//      
        soapEnvelope.dotNet = true;
       soapEnvelope.setOutputSoapObject(request);
              // in the above line i m getting error
       HttpTransportSE aht = new HttpTransportSE(URL);

这些是我的logcat消息

 06-21 18:59:34.435: ERROR/AndroidRuntime(1164): FATAL EXCEPTION: main
 06-21 18:59:34.435: ERROR/AndroidRuntime(1164): java.lang.RuntimeException:
 Unable to instantiate activity ComponentInfo{com.soap/com.soap.Register}:  
   java.lang.NullPointerException
              06-21 18:59:34.435: ERROR/AndroidRuntime(1164):     
     ERROR/AndroidRuntime(1164): at  android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
           ERROR/AndroidRuntime(1164): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
           ERROR/AndroidRuntime(1164): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
            ERROR/AndroidRuntime(1164): at android.os.Handler.dispatchMessage(Handler.java:99) 
           ERROR/AndroidRuntime(1164): at android.os.Looper.loop(Looper.java:123) 
           ERROR/AndroidRuntime(1164): at android.app.ActivityThread.main(ActivityThread.java:4627)
           ERROR/AndroidRuntime(1164): at java.lang.reflect.Method.invokeNative(Native Method)
           ERROR/AndroidRuntime(1164): at java.lang.reflect.Method.invoke(Method.java:521)

1 个答案:

答案 0 :(得分:1)

regmalebtnregfemalebtn可能为空。确保在setContentView来电之前调用您活动中的findViewById()。否则,它们将返回null。