2014-02-21 57 views
0

使用單選按鈕我試圖更改活動。無法解決ClassCastException的錯誤

這是主要的活動

public void onRadioButtonClicked(View view) { 

    String selection = ""; 

    switch (view.getId()) { 
    case R.id.radioButton1: 
     Intent i = new Intent (MainActivity.this, Personal.class); 
     startActivity(i); 
     break; 
    case R.id.radioButton2: 
     Intent intent = new Intent (MainActivity.this, Home.class); 
     startActivity(intent); 
     break; 
    } 

} 

單選按鈕2工作正常,但是當我點擊單選按鈕1,我無法打開活動。 按鈕1活動包含

SQLiteDatabase db1 = null; 
private static String DBNAME = "PERSONAL.db"; 
Button save, cancel, check ; 
EditText name, price = null; 
Editable d1, d2 = null; 
TextView txt = null; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_personal); 


    cancel = (Button)findViewById(R.id.cancel); 
    cancel.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 

      Intent i = new Intent(Personal.this, MainActivity.class); 
      startActivity(i); 
     } 
    }); 

    name = (EditText)findViewById(R.id.name); 
    price = (EditText)findViewById(R.id.cancel); 

    db1 = openOrCreateDatabase(DBNAME, Context.MODE_PRIVATE,null); 

    save = (Button)findViewById(R.id.save); 
    save.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 

      d1 = name.getText(); 
      d2 = price.getText(); 

      try 
      { 
       db1.execSQL("CREATE TABLE IF NOT EXISTS personal_data(ID INTEGER PRIMARY KEY ,Name VARCHAR, Price INTEGER); "); 
       db1.execSQL("INSERT INTO personal_data (Name,Price) VALUES ('"+d1+"','"+d2+"');"); 

       name.setText(""); 
       price.setText(""); 
       Cursor c = db1.rawQuery("SELECT * FROM personal_data", null); 

       if(c!= null){ 
        if (c.moveToFirst()) { 
         do { 

          String name =c.getString(c.getColumnIndex("Name")); 
          String price =c.getString(c.getColumnIndex("Price")); 

          System.out.println(name); 
          System.out.println(price); 


         } 
         while(c.moveToNext()); 
        } 

        Integer a = c.getCount(); 
        System.out.println(a); 

       } 


      } 
      catch(Exception e) 
      { 
       System.out.println(e); 


      } 


     } 
    }); 

    check = (Button)findViewById(R.id.view); 
    check.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 

      txt = (TextView)findViewById(R.id.textView1); 

      txt.setText(d1+""+d2); 
      String s = (String)txt.getText(); 
      System.out.println(s); 
     } 
    }); 

,這裏是我得到的錯誤。 登錄貓

02-21 11:43:21.939: E/AndroidRuntime(9468): FATAL EXCEPTION: main 

02-21 11:43:21.939: E/AndroidRuntime(9468): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.my_expenses/com.example.my_expenses.Personal}: java.lang.ClassCastException: android.widget.Button 
02-21 11:43:21.939: E/AndroidRuntime(9468): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651) 

02-21 11:43:21.939: E/AndroidRuntime(9468):at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667) 

02-21 11:43:21.939: E/AndroidRuntime(9468): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 

02-21 11:43:21.939: E/AndroidRuntime(9468):at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935) 

02-21 11:43:21.939: E/AndroidRuntime(9468): at android.os.Handler.dispatchMessage(Handler.java:99) 

02-21 11:43:21.939: E/AndroidRuntime(9468): at android.os.Looper.loop(Looper.java:130) 

02-21 11:43:21.939: E/AndroidRuntime(9468): at android.app.ActivityThread.main(ActivityThread.java:3687) 

02-21 11:43:21.939: E/AndroidRuntime(9468): at java.lang.reflect.Method.invokeNative(Native Method) 

02-21 11:43:21.939: E/AndroidRuntime(9468): at java.lang.reflect.Method.invoke(Method.java:507) 

02-21 11:43:21.939: E/AndroidRuntime(9468): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867) 

02-21 11:43:21.939: E/AndroidRuntime(9468): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625) 

02-21 11:43:21.939: E/AndroidRuntime(9468): at dalvik.system.NativeStart.main(Native Method) 

02-21 11:43:21.939: E/AndroidRuntime(9468): Caused by: java.lang.ClassCastException: android.widget.Button 
02-21 11:43:21.939: E/AndroidRuntime(9468):at com.example.my_expenses.Personal.onCreate(Personal.java:46) 

02-21 11:43:21.939: E/AndroidRuntime(9468):at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 

02-21 11:43:21.939: E/AndroidRuntime(9468):at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615) 

我試圖清理的項目,但我得到同樣的錯誤。

+0

我認爲你是在按鈕放置按鈕的地方 – rajshree

+1

什麼是行數46在personal.java – InnocentKiller

+5

錯誤在這一行price =(EditText)findViewById(R.id.cancel);取消是一個按鈕,您嘗試更改爲edittext – appukrb

回答

0

您已經使用投兩次,R.id.cancel請檢查您的佈局XML究竟是什麼..

取消=(按鈕)findViewById(R.id.cancel);

price =(EditText)findViewById(R.id.cancel);