2013-06-01 91 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。*'。海事组织我宁愿前者。 –