2013-06-01 88 views
0

我今天剛開始學習Android,當我運行它時,程序崩潰。對不起,我的無能,幫助將不勝感激。我一直在試圖弄清楚這一點。我一直在關注YouTube教程,但老師的日食是一個較舊的版本,因此很難學習。下面是代碼:您要使用的android.view.View OnClickHanderAndroid計算器崩潰

private OnClickListener multiplyClicked = new OnClickListener() 
{ 

    @Override 
    public void onClick(View v) 
    { 

,改變你的進口這

package com.audiack.newproj; 

import android.app.Activity; 
import android.content.DialogInterface; 
import android.content.DialogInterface.OnClickListener; 
import android.os.Bundle; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.LinearLayout; 
import android.widget.TextView; 

public class MainActivity extends Activity 
{ 
LinearLayout layout1; 
EditText number1Text; 
EditText number2Text; 
Button calcButton,derp; 
TextView answer; 

@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 

    layout1 = new LinearLayout(this); 
    number1Text = new EditText(this); 
    number2Text = new EditText(this); 
    calcButton = new Button(this); 
    answer = new TextView(this); 

    layout1.setOrientation(LinearLayout.VERTICAL); 

    answer.setText("0"); 
    calcButton.setText("you suck at math bro"); 

    calcButton.setOnClickListener((android.view.View.OnClickListener) multiplyClicked); 

    layout1.addView(number1Text); 
    layout1.addView(number2Text);  
    layout1.addView(calcButton); 
    layout1.addView(answer); 

    setContentView(layout1); 
} 
    private OnClickListener multiplyClicked = new OnClickListener() 
    { 

     @Override 
     public void onClick(DialogInterface arg0, int arg1) 
     { 
      String firstString = number1Text.getText().toString(); 
      String secondString = number2Text.getText().toString(); 
      double firstNum = Double.parseDouble(firstString); 
      double secondNum = Double.parseDouble(secondString); 
      double result = firstNum * secondNum; 
      String resultString = String.valueOf(result); 
      answer.setText(resultString); 
     } 

    }; 

}

+0

什麼是堆棧跟蹤?就像它崩潰的原因是什麼?如果可以,請留下堆棧跟蹤。 – RedRumming

+2

請更新您的問題的標題。說*我的應用程序崩潰*意味着什麼,就像去看醫生,說*我頭痛,現在醫治我*。 –

+0

我不知道如何獲取堆棧跟蹤...很抱歉 –

回答

0

你用錯了進口的onClickListener

import android.view.View; 

你已經導入了一個不同的EventHandler,你叫它這樣

calcButton.setOnClickListener((android.view.View.OnClickListener) multiplyClicked); 

但在你導入你使用的是不同的OnClickHandler所以它使用了和正在給InvalidCastException的,因爲它們是兩個不同的充事件處理器。

所以,如果你刪除

import android.content.DialogInterface.OnClickListener; 

,改變

calcButton.setOnClickListener(multiplyClicked); 

你應該解決無效的轉換。

+0

它現在給我這個錯誤:06-01 15:37:57.439:E/AndroidRuntime(21957):引起:java.lang.ClassCastException:com.audiack.newproj.MainActivity $ 1無法轉換爲android.view。查看$ OnClickListener –

+0

對不起,錯誤的錯誤XD在這裏是正確的:新的DialogInterface.OnClickListener(){}類型的onClick(View)方法必須覆蓋 或實現超類型方法 –

+0

這是因爲您需要將其稱爲'new View .OnClickListener'或者做一個靜態導入:'import static android.view.View。*'。海事組織我寧願前者。 –