5

Il mio problema è che quando eseguo la mia app sull'emulatore Android l'app si avvia ma si blocca rapidamente e visualizza il popup: "Sfortunatamente, TipCalculator si è fermato." Ho esaminato il codice e ho cercato su internet completamente per una risposta. Sì, sono uno dei nuovi sviluppatori Android. Ho esaminato gli errori che sono stati generati da LogCat ma non conosco il problema e dove trovarlo in base agli errori che ho ricevuto.Android - FATAL EXCEPTION: main - Impossibile avviare l'attività ComponentInfo

Ecco il mio codice:

TipCalc.java

pacchetto com.troysantry.tipcalculator;

import android.os.Bundle; 
import android.app.Activity; 
import android.text.Editable; 
import android.text.TextWatcher; 
import android.view.Menu; 
import android.widget.EditText; 

public class TipCalc extends Activity { 

    public static final String TOTAL_BILL = "TOTAL_BILL"; 
    public static final String CURRENT_TIP = "CURRENT_TIP"; 
    public static final String BILL_WITHOUT_TIP = "BILL_WITHOUT_TIP"; 

    public double billBeforeTip; 
    public double tipAmount; 
    public double finalBill; 

    EditText txtBillBeforeTip; 
    EditText txtTipAmount; 
    EditText txtFinalBill; 

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

     if(savedInstanceState==null){ 

      billBeforeTip=0.0; 
      tipAmount=0.15; 
      finalBill=0.0; 
     } 
     else{ 

      billBeforeTip=savedInstanceState.getDouble(BILL_WITHOUT_TIP); 
      tipAmount=savedInstanceState.getDouble(CURRENT_TIP); 
      finalBill=savedInstanceState.getDouble(TOTAL_BILL); 

     } 
      txtBillBeforeTip = (EditText) findViewById(R.id.txtBill); 
      txtTipAmount=(EditText) findViewById(R.id.txtTip); 
      txtFinalBill=(EditText) findViewById(R.id.txtFinal); 

      txtBillBeforeTip.addTextChangedListener(billBeforeTipListener);  
    } 

    private TextWatcher billBeforeTipListener = new TextWatcher(){ 

     @Override 
     public void afterTextChanged(Editable arg0) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, 
       int after) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void onTextChanged(CharSequence s, int start, int before, 
       int count) { 

      try{ 
       billBeforeTip = Double.parseDouble(s.toString()); 

      } 
      catch(NumberFormatException e){ 
       billBeforeTip=0.0; 
      } 

      UpdateTipAndFinalBill();  
     } 
    }; 

    protected void onSaveInstanceState(Bundle outState){ 

     super.onSaveInstanceState(outState); 

     outState.putDouble(TOTAL_BILL, finalBill); 
     outState.putDouble(CURRENT_TIP, tipAmount); 
     outState.putDouble(BILL_WITHOUT_TIP, billBeforeTip); 

    } 

    private void UpdateTipAndFinalBill(){ 
     double tipAmount = Double.parseDouble(txtTipAmount.getText().toString()); 

     double finalBill = billBeforeTip + (billBeforeTip*tipAmount); 

     txtFinalBill.setText(String.format("%.02f",finalBill)); 

    } 
    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.tip_calc, menu); 
     return true; 
    } 

} 

activity_tip_calc.xml

<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:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context=".TipCalc" > 

    <TextView 
     android:id="@+id/tvBill" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:layout_marginLeft="19dp" 
     android:layout_marginTop="14dp" 
     android:text="@string/bill_text_view" /> 

    <TextView 
     android:id="@+id/tvFinal" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignRight="@+id/txtBill" 
     android:layout_below="@+id/txtBill" 
     android:layout_marginRight="24dp" 
     android:layout_marginTop="18dp" 
     android:text="@string/final_text_view" /> 

    <EditText 
     android:id="@+id/txtFinal" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBaseline="@+id/tvFinal" 
     android:layout_alignBottom="@+id/tvFinal" 
     android:layout_alignRight="@+id/txtTip" 
     android:layout_marginRight="25dp" 
     android:ems="6" 
     android:inputType="numberDecimal" 
     android:text="@string/final_bill_edit_text" /> 

    <TextView 
     android:id="@+id/tvTip" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_above="@+id/tvFinal" 
     android:layout_centerHorizontal="true" 
     android:text="@string/tip_text_view" /> 

    <EditText 
     android:id="@+id/txtTip" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBaseline="@+id/tvTip" 
     android:layout_alignBottom="@+id/tvTip" 
     android:layout_toRightOf="@+id/tvTip" 
     android:ems="5" 
     android:inputType="numberDecimal" 
     android:text="@string/tip_edit_text" 
     android:textSize="16sp" /> 

    <EditText 
     android:id="@+id/txtBill" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBaseline="@+id/tvBill" 
     android:layout_alignBottom="@+id/tvBill" 
     android:layout_toRightOf="@+id/tvBill" 
     android:ems="5" 
     android:inputType="numberDecimal" 
     android:text="@string/bill_edit_text" 
     android:textSize="16sp" /> 

</RelativeLayout> 

LogCat

11-04 01:24:10.403: D/AndroidRuntime(1050): Shutting down VM 
11-04 01:24:10.403: W/dalvikvm(1050): threadid=1: thread exiting with uncaught exception (group=0x41465700) 
11-04 01:24:10.543: E/AndroidRuntime(1050): FATAL EXCEPTION: main 
11-04 01:24:10.543: E/AndroidRuntime(1050): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.troysantry.tipcalculator/com.troysantry.tipcalculator.TipCalc}: java.lang.ClassCastException: android.widget.TextView cannot be cast to android.widget.EditText 
11-04 01:24:10.543: E/AndroidRuntime(1050):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211) 
11-04 01:24:10.543: E/AndroidRuntime(1050):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261) 
11-04 01:24:10.543: E/AndroidRuntime(1050):  at android.app.ActivityThread.access$600(ActivityThread.java:141) 
11-04 01:24:10.543: E/AndroidRuntime(1050):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256) 
11-04 01:24:10.543: E/AndroidRuntime(1050):  at android.os.Handler.dispatchMessage(Handler.java:99) 
11-04 01:24:10.543: E/AndroidRuntime(1050):  at android.os.Looper.loop(Looper.java:137) 
11-04 01:24:10.543: E/AndroidRuntime(1050):  at android.app.ActivityThread.main(ActivityThread.java:5103) 
11-04 01:24:10.543: E/AndroidRuntime(1050):  at java.lang.reflect.Method.invokeNative(Native Method) 
11-04 01:24:10.543: E/AndroidRuntime(1050):  at java.lang.reflect.Method.invoke(Method.java:525) 
11-04 01:24:10.543: E/AndroidRuntime(1050):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 
11-04 01:24:10.543: E/AndroidRuntime(1050):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
11-04 01:24:10.543: E/AndroidRuntime(1050):  at dalvik.system.NativeStart.main(Native Method) 
11-04 01:24:10.543: E/AndroidRuntime(1050): Caused by: java.lang.ClassCastException: android.widget.TextView cannot be cast to android.widget.EditText 
11-04 01:24:10.543: E/AndroidRuntime(1050):  at com.troysantry.tipcalculator.TipCalc.onCreate(TipCalc.java:45) 
11-04 01:24:10.543: E/AndroidRuntime(1050):  at android.app.Activity.performCreate(Activity.java:5133) 
11-04 01:24:10.543: E/AndroidRuntime(1050):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 
11-04 01:24:10.543: E/AndroidRuntime(1050):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175) 
11-04 01:24:10.543: E/AndroidRuntime(1050):  ... 11 more 
11-04 01:29:11.177: I/Process(1050): Sending signal. PID: 1050 SIG: 9 
11-04 01:31:32.080: D/AndroidRuntime(1109): Shutting down VM 
11-04 01:31:32.080: W/dalvikvm(1109): threadid=1: thread exiting with uncaught exception (group=0x41465700) 
11-04 01:31:32.194: E/AndroidRuntime(1109): FATAL EXCEPTION: main 
11-04 01:31:32.194: E/AndroidRuntime(1109): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.troysantry.tipcalculator/com.troysantry.tipcalculator.TipCalc}: java.lang.ClassCastException: android.widget.TextView cannot be cast to android.widget.EditText 
11-04 01:31:32.194: E/AndroidRuntime(1109):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211) 
11-04 01:31:32.194: E/AndroidRuntime(1109):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261) 
11-04 01:31:32.194: E/AndroidRuntime(1109):  at android.app.ActivityThread.access$600(ActivityThread.java:141) 
11-04 01:31:32.194: E/AndroidRuntime(1109):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256) 
11-04 01:31:32.194: E/AndroidRuntime(1109):  at android.os.Handler.dispatchMessage(Handler.java:99) 
11-04 01:31:32.194: E/AndroidRuntime(1109):  at android.os.Looper.loop(Looper.java:137) 
11-04 01:31:32.194: E/AndroidRuntime(1109):  at android.app.ActivityThread.main(ActivityThread.java:5103) 
11-04 01:31:32.194: E/AndroidRuntime(1109):  at java.lang.reflect.Method.invokeNative(Native Method) 
11-04 01:31:32.194: E/AndroidRuntime(1109):  at java.lang.reflect.Method.invoke(Method.java:525) 
11-04 01:31:32.194: E/AndroidRuntime(1109):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 
11-04 01:31:32.194: E/AndroidRuntime(1109):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
11-04 01:31:32.194: E/AndroidRuntime(1109):  at dalvik.system.NativeStart.main(Native Method) 
11-04 01:31:32.194: E/AndroidRuntime(1109): Caused by: java.lang.ClassCastException: android.widget.TextView cannot be cast to android.widget.EditText 
11-04 01:31:32.194: E/AndroidRuntime(1109):  at com.troysantry.tipcalculator.TipCalc.onCreate(TipCalc.java:44) 
11-04 01:31:32.194: E/AndroidRuntime(1109):  at android.app.Activity.performCreate(Activity.java:5133) 
11-04 01:31:32.194: E/AndroidRuntime(1109):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 
11-04 01:31:32.194: E/AndroidRuntime(1109):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175) 
11-04 01:31:32.194: E/AndroidRuntime(1109):  ... 11 more 
11-04 01:36:33.195: I/Process(1109): Sending signal. PID: 1109 SIG: 9 
11-04 02:11:09.684: D/AndroidRuntime(1167): Shutting down VM 
11-04 02:11:09.684: W/dalvikvm(1167): threadid=1: thread exiting with uncaught exception (group=0x41465700) 
11-04 02:11:09.855: E/AndroidRuntime(1167): FATAL EXCEPTION: main 
11-04 02:11:09.855: E/AndroidRuntime(1167): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.troysantry.tipcalculator/com.troysantry.tipcalculator.TipCalc}: java.lang.ClassCastException: android.widget.TextView cannot be cast to android.widget.EditText 
11-04 02:11:09.855: E/AndroidRuntime(1167):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211) 
11-04 02:11:09.855: E/AndroidRuntime(1167):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261) 
11-04 02:11:09.855: E/AndroidRuntime(1167):  at android.app.ActivityThread.access$600(ActivityThread.java:141) 
11-04 02:11:09.855: E/AndroidRuntime(1167):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256) 
11-04 02:11:09.855: E/AndroidRuntime(1167):  at android.os.Handler.dispatchMessage(Handler.java:99) 
11-04 02:11:09.855: E/AndroidRuntime(1167):  at android.os.Looper.loop(Looper.java:137) 
11-04 02:11:09.855: E/AndroidRuntime(1167):  at android.app.ActivityThread.main(ActivityThread.java:5103) 
11-04 02:11:09.855: E/AndroidRuntime(1167):  at java.lang.reflect.Method.invokeNative(Native Method) 
11-04 02:11:09.855: E/AndroidRuntime(1167):  at java.lang.reflect.Method.invoke(Method.java:525) 
11-04 02:11:09.855: E/AndroidRuntime(1167):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 
11-04 02:11:09.855: E/AndroidRuntime(1167):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
11-04 02:11:09.855: E/AndroidRuntime(1167):  at dalvik.system.NativeStart.main(Native Method) 
11-04 02:11:09.855: E/AndroidRuntime(1167): Caused by: java.lang.ClassCastException: android.widget.TextView cannot be cast to android.widget.EditText 
11-04 02:11:09.855: E/AndroidRuntime(1167):  at com.troysantry.tipcalculator.TipCalc.onCreate(TipCalc.java:44) 
11-04 02:11:09.855: E/AndroidRuntime(1167):  at android.app.Activity.performCreate(Activity.java:5133) 
11-04 02:11:09.855: E/AndroidRuntime(1167):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 
11-04 02:11:09.855: E/AndroidRuntime(1167):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175) 
11-04 02:11:09.855: E/AndroidRuntime(1167):  ... 11 more 
+4

tenta di eseguire l'applicazione dopo aver cancellato il progetto da Project-> Clean –

+0

Puoi provare a pulire e creare il progetto e riavviare l'app? –

+0

Sono d'accordo con @ ρяσѕρєяK, ho provato il tuo codice e sembra funzionare bene. – blitzen12

risposta

4

Causato da: java.lang.ClassCastException: android.widget.TextView non possono essere gettati al android.widget.EditText

a com.troysantry.tipcalculator.TipCalc.onCreate(TipCalc.java:45)

LogCat è tuo amico.

Si dispone di un TextView nel layout, tuttavia nel codice, si sta tentando di trasformarlo in un EditText.

Dopo aver riletto il codice, non sembra esserci un problema, prova a pulire il tuo progetto.

Progetto -> Clean

+3

'R.id.txtBill, R.id.txtTip, R.id.txtFinal' tutti gli ID di editText solo – Raghunandan

+0

Si prega di verificare la riga 45 in TipCalc.java – harris

0

Hai probabilmente un TextView nel layout e si utilizza un EditText nel codice.

11-04 01:24:10.543: E/AndroidRuntime(1050): Caused by: java.lang.ClassCastException: android.widget.TextView cannot be cast to android.widget.EditText 
+2

R.id.txtBill, R.id.txtTip, R.id.txtFinal tutti gli id ​​di editText solo. Anche io ho fatto un errore pubblicandolo prima una risposta cancellandolo – Raghunandan

3

Dalla mia esperienza, è un problema con RelativeLayout. Non so qual è il problema, ma dopo 2 soluzioni ha funzionato per me.

  1. Pulisci il tuo progetto ed esegui nuovamente. Se non ha esito positivo, quindi
  2. Modifica RelativeLayout a LinearLayout (È necessario rimuovere anche gli attributi relativi e un lavoro equo per organizzare le viste).
+0

"Cambia RelativeLayout in LinearLayout". cosa c'è di sbagliato con il layout relativo. non ce n'è bisogno. pulire e costruire dovrebbe funzionare – Raghunandan

+0

@Raghunandan: Sì, dovrebbe funzionare. Ma non lo so, a volte no. – Nizam

+0

@Nizam Hai ragione ... pulito non ha funzionato ma cambiando da relativo a lineare fisso .. –

0

Ho avuto lo stesso problema. È stato risolto eseguendo ant clean; ant debug.

Questo errore si è verificato quando ho modificato res/layout/main.xml e immediatamente ant debug.

Problemi correlati