2009-08-30 71 views
0

所以這是我第一次真正的Android程序(!hello world),但我確實有java體驗。程序編譯得很好,但運行時一旦它打開就崩潰(嘗試調試,但它在碰到我的斷點之前崩潰)。正在尋找任何有更多android經驗的人的建議。Android程序崩潰(新平臺)

package org.me.tipcalculator; 
import android.app.Activity; 
import android.os.Bundle; 
import android.widget.TextView; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import java.text.NumberFormat; 
import android.util.Log; 

public class TipCalculator extends Activity { 

public static final String tag = "TipCalculator"; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle icicle) { 
    super.onCreate(icicle); 
    setContentView(R.layout.main); 

    final EditText mealpricefield = (EditText) findViewById(R.id.mealprice); 
    final TextView answerfield = (TextView) findViewById(R.id.answer); 

    final Button button = (Button) findViewById(R.id.calculate); 
    button.setOnClickListener(new Button.OnClickListener() 
    { 
     public void onClick(View v) { 
      try 
      { 
       Log.i(tag, "onClick invoked."); 
       String mealprice = mealpricefield.getText().toString(); 

       Log.i(tag, "mealprice is [" + mealprice + "]"); 
       String answer = ""; 

       if (mealprice.indexOf("$") == -1) 
       { 
        mealprice = "$" + mealprice; 
       } 

       float fmp = 0.0F; 

       NumberFormat nf = 
         java.text.NumberFormat.getCurrencyInstance(); 

       fmp = nf.parse(mealprice).floatValue(); 

       fmp *= 1.2; 

       Log.i(tag, "Total Meal Price (unformatted) is [" + fmp + "]"); 

       answer = "Full Price, including 20% Tip: " + nf.format(fmp); 

       answerfield.setText(answer); 

       Log.i(tag, "onClick Complete"); 

      } 
      catch(java.text.ParseException pe){ 
       Log.i (tag ,"Parse exception caught"); 
       answerfield.setText("Failed to parse amount?"); 
      } 
      catch(Exception e){ 
       Log.e (tag ,"Failed to Calculate Tip:" + e.getMessage()); 
       e.printStackTrace(); 
       answerfield.setText(e.getMessage()); 
      } 
     } 
    } 
    ); 
} 

萬一它有助於繼承人的XML

<?xml version="1.0" encoding="UTF-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent"> 
<TextView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="Android Tip Calculator"/> 
<EditText 
    android:id="@+id/mealprice" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:autoText="true"/> 
<Button 
    android:id="@+id/calculate" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Calculate Tip"/> 
<TextView 
    android:id= "@+id/answer" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text=""/> 
</LinearLayout> 

回答

0

您可能會忘記在AndroidManifest.xml中註冊您的活動名稱。這對初學者來說是一個非常普遍的錯誤。 AndroidManifest.xml應該是這樣的:

<activity android:name=".TipCalculator" 
       android:label="@string/app_name"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
1

使用adb logcat,DDMS,或在Eclipse中DDMS角度找出導致你崩潰的Java堆棧跟蹤。