5

我的問題是,當我在android模擬器上運行我的應用程序時,應用程序啓動,但快速崩潰並顯示彈出窗口:「不幸的是,TipCalculator已停止。我已經瀏覽了代碼,並且已經在互聯網上徹底搜索了一個答案。是的,我是Android開發人員的一名新手。我查看了LogCat生成的錯誤,但根據收到的錯誤不知道問題以及在哪裏找到它。Android - 致命的例外:主 - 無法啓動活動ComponentInfo

這裏是我的代碼:

TipCalc.java

包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

嘗試從Project-> Clean清理項目後運行應用程序 –

+0

您可以嘗試清理並生成項目並重新啓動應用程序嗎? –

+0

我同意@ρяσѕρєяK,我試過你的代碼,它似乎工作正常。 – blitzen12

回答

4

產生的原因:java.lang.ClassCastException: android.widget.TextView不能轉換爲android.widget.EditText

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

LogCat是你的朋友。

您的佈局中有一個TextView,但是在您的代碼中,您試圖將其轉換爲EditText。

重新讀取您的代碼後,似乎沒有問題,請嘗試清理您的項目。

項目 - >清潔

+3

R.id.txtBill, R.id.txtTip, R.id.txtFinal'僅限editText的所有ID – Raghunandan

+0

請在TipCalc.java中檢查第45行 – harris

0

你可能已經在你的佈局TextView,你在代碼中使用的EditText

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 editText的所有ID僅在.i之前發佈了錯誤將其刪除 – Raghunandan

3

從我的經驗來看,這是RelativeLayout的問題。我不知道有什麼問題,但下面的兩個解決方案爲我工作。

  1. 清理您的項目並重新運行。 如果不成功,那麼
  2. RelativeLayout更改爲LinearLayout(這也需要刪除相關屬性,並且安排視圖是公平的工作)。
+0

「將RelativeLayout更改爲LinearLayout」。相對佈局怎麼了?沒有必要。乾淨和建設應該工作 – Raghunandan

+0

@拉康丹丹:是的,它應該工作。但我不知道,有時它不。 – Nizam

+0

@Nizam你是對的...乾淨沒有工作,但從相對線性固定它.. –

0

我有同樣的問題。它通過運行ant clean; ant debug進行修復。

當我修改res/layout/main.xml並立即執行ant debug時發生此錯誤。

相關問題