Toast在我的android应用程序中不起作用

时间:2015-11-14 07:59:34

标签: android android-layout android-activity

我是初学Android应用程序开发人员。目前正在尝试构建一个简单的计算器应用程序,希望通过使用Toast显示计算结果。但是现在我无法使用toast来显示此输出。有我的代码

MainActivity.java

package com.example.calculator;

import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
import android.app.Activity;

public class MainActivity extends Activity {
    EditText input_field1,input_field2,result_field;
    int result_var;

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

    public void add_numbers(View v){

        input_field1= (EditText) findViewById(R.id.field1);
        String no1=input_field1.getText().toString();
        input_field2= (EditText) findViewById(R.id.field2);
        String no2=input_field2.getText().toString();
        int field1_int=Integer.parseInt(no1);
        int field2_int=Integer.parseInt(no2);
        result_field= (EditText) findViewById(R.id.resultfield);
        result_var=field1_int+field2_int;
        result_field.setText("result "+result_var);
        Toast.makeText(getApplicationContext(), result_var, Toast.LENGTH_LONG).show();

    }   
}

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"
    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=".MainActivity" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/button1"
        android:layout_alignBottom="@+id/button1"
        android:layout_toRightOf="@+id/button1"
        android:text="Substract" />

    <Button
        android:id="@+id/divide"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/button2"
        android:layout_alignBottom="@+id/button2"
        android:layout_toRightOf="@+id/button2"
        android:text="Divide" />

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/editText1"
        android:layout_below="@+id/editText1"
        android:layout_marginTop="105dp"
        android:text="Add" 
        android:onClick="add_numbers" />


    <EditText
        android:id="@+id/field1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/editText1"
        android:layout_below="@+id/editText1"
        android:layout_marginTop="22dp"
        android:ems="10" />

    <EditText
        android:id="@+id/resultfield"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/button1"
        android:layout_below="@+id/button2"
        android:layout_marginTop="16dp"
        android:ems="10" />

    <EditText
        android:id="@+id/field2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/button2"
        android:layout_alignLeft="@+id/button1"
        android:ems="10" />

</RelativeLayout>

4 个答案:

答案 0 :(得分:1)

问题是你需要在toast中显示一个字符串。您正在尝试显示int。最简单的方法是使用String.valueOf()将它用String包装。

Toast.makeText(getApplicationContext(), String.valueOf(result_var), Toast.LENGTH_LONG).show();

作为一般性的注释,我们不会在变量名中使用下划线_。最好这样命名。

EditText mInputField1,mInputField2,mResultField;
int mResultVar;

m用于成员变量。

最好将findViewById放入onCreate。

答案 1 :(得分:0)

result_var应该是一个字符串

String result_var="";
String Testing="testing";
    Toast.makeText(getApplicationContext(), result_var+testing, Toast.LENGTH_LONG).show();

否则按照你的意思使用:

// if you have values of field1_int and field2_int

int result_var=field1_int+field2_int;

    Toast.makeText(getApplicationContext(),String.valueOf(result_var), Toast.LENGTH_LONG).show();

答案 2 :(得分:0)

尝试此Toast消息必须为String

Toast.makeText(getApplicationContext(), ""+result_var, Toast.LENGTH_LONG).show();

答案 3 :(得分:0)

建议,因为你是初学者。您应该阅读您正在使用的任何方法所接受的必需参数。

Read Toast

例如在您的情况下。

 Toast.makeText(getApplicationContext(), ""+result_var, Toast.LENGTH_LONG).show();

或者

Toast.makeText(getApplicationContext(),String.valueOf(result_var), Toast.LENGTH_LONG).show();