2013-01-07 36 views
0

我剛開始開發Android應用程序,並在手機上開始了第一次應用程序崩潰。 我使用Eclipse作爲SDK和我的手機已經andoid版本2.3.6 下面是詳細信息Android應用程序在手機上崩潰

activity_main.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" 
    tools:context=".MainActivity" > 

    <EditText 
     android:id="@+id/edit_text" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/edit_text" 
     android:layout_alignParentTop="true" 
     android:layout_centerHorizontal="true" 
     android:ems="10" 
     android:hint="@string/edit_text" 
     android:inputType="numberDecimal" /> 

    <Button 
     android:id="@+id/button1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/edit_text" 
     android:layout_centerHorizontal="true" 
     android:onClick="calc_fare" 
     android:text="@string/calc_button" /> 

    <TextView 
     android:id="@+id/result_text" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/button1" 
     android:layout_centerHorizontal="true" 
     android:layout_marginTop="25dp" 
     android:text="@string/result_text" 
     android:textAppearance="?android:attr/textAppearanceMedium" /> 

</RelativeLayout> 

的strings.xml:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 

    <string name="app_name">Taxi Fare Calculator</string> 
    <string name="edit_text">Enter Meter Reading</string><string name="calc_button">Calculate</string><string name="result_text" >Actual Fare</string><string name="menu_settings">Settings</string> 
</resources> 

mainActivity.java :

package com.example.taxifarecalculator; 

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

public class MainActivity extends Activity { 



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

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

    } 

    public void calc_fare() { 
     EditText editText = (EditText) findViewById(R.id.edit_text); 
     EditText resultText = (EditText) findViewById(R.id.result_text); 
     Double mtr = Double.parseDouble(editText.getText().toString()); 
     Double fare=mtr*103; 
     resultText.setText(fare.toString()); 


    } 

} 

應用程序掛起和崩潰時,我壓S中的計算按鈕,這理想地應該調用,反過來,應填充文本視圖

問候 帕裏克希特

+6

將Button onClick'public void calc_fare()'方法聲明更改爲'public void calc_fare(View v)',並且當您的應用程序崩潰時也提問並記錄日誌 –

+0

關於研究日誌貓我發現這個:01-07 12 :11:39.148:E/AndroidRuntime(10313):java.lang.IllegalStateException:無法在視圖類android.widget.Button的onClick處理程序的活動類com.example.taxifarecalculator.MainActivity中找到方法calc_fare(View) id'button1' 有人可以指出我在哪裏錯了嗎? – Parikshit

回答

2

變化從

public void calc_fare() { 

    } 

此方法的參數calc_fare方法是這樣的:

public void calc_fare(View v) { 

    } 
+0

你好Husam, 我照你告訴我的,但仍然是同樣的問題.... – Parikshit

+0

在onCreate()方法中添加這兩個聲明EditText editText =(EditText)findViewById(R.id.edit_text); EditText resultText =(EditText)findViewById(R.id.result_text); –

+0

Hello Husam, 我加了,現在應用程序在啓動時崩潰了。 – Parikshit

0

您正在佈局中創建calc_fare的偵聽器,但在點擊它時沒有讓它聽到 並且必須引起程序崩潰 您的按鈕是一個視圖,你不通過視圖,當你正在處理你的觀點的聽衆 只需Simpliy添加視圖在您的方法

public void Calc_fare(){ 

//add your code here 

} 

這樣

public void Calc_fare(View view){ 
//add your code here 
} 

現在它會選擇聽衆,並將執行所需的功能

0

嘿,我檢查了代碼並做了一些相關的更改。您在Button的xml文件中定義的方法無法訪問,所以我明確實現了按鈕的onClick,並且它的工作正常。

退房這樣:

public class MainActivity extends Activity{ 
     EditText editText; 
     TextView resultText; 
     Button m_btn; 
     View m_view; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    editText = (EditText) findViewById(R.id.edit_text); 
resultText = (TextView) findViewById(R.id.result_text); 
    m_btn=(Button)findViewById(R.id.button1); 
    m_btn.setOnClickListener(new View.OnClickListener() 
    { 
     @Override 
     public void onClick(View p_v) { 
      // TODO Auto-generated method stub 
      calc_fare(); 
     } 
    }); 
} 
public void calc_fare() {  
    Double mtr = Double.parseDouble(editText.getText().toString()); 
    Double fare=mtr*103; 
    resultText.setText(fare.toString()); 
} 

}

從佈局的XML文件中刪除您onClick事件,並嘗試這種方式。它的工作很好。

+0

您好Grishu,我試圖實現您的代碼,但它失敗,出現以下異常: 01-07 14:25:58.234:E/AndroidRuntime(12925):致命例外:主 01-07 14:25:58.234:E/AndroidRuntime(12925):java.lang.ClassCastException:android.widget.TextView 01-07 14:25:58.234:E/AndroidRuntime(12925):\t at com.example.taxifarecalculator.MainActivity.calc_fare(MainActivity.java:47 ) 01-07 14:25:58.234:E/AndroidRuntime(12925):\t at com.example.taxifarecalculator.MainActivity $ 1.onClick(MainActivity.java:31 – Parikshit

+0

只需嘗試清理應用程序並重新構建然後運行。它會工作。 – GrIsHu

+0

沒有。仍然是同樣的問題。ClassCastexception ... – Parikshit