0

我正在尝试制作一个 android 应用程序,用户在其中输入一个值,然后他们按下下面的按钮。当他们按下按钮时,我希望它将编辑文本值添加到自身,然后在屏幕上显示结果。例如,如果用户在编辑文本中输入了两个,当他们按下按钮时,我希望应用程序执行 2+2,然后在屏幕上显示结果 4。这是我到目前为止所拥有的...

int AnsNum;
EditText Km;
Button KmPL;
TextView Ans;

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

    Km = (EditText) findViewById(R.id.etKm);
    KmPL = (Button) findViewById(R.id.button1);
    Ans = (TextView) findViewById(R.id.tvAns);

    KmPL.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            // TODO Auto-generated method stub
            Km = (EditText) findViewById(R.id.etKm);
            int etKm = new Integer(Km.getText().toString()).intValue();

            int AnsNum = etKm+etKm;
            Ans.setText(AnsNum);        
        }
    });
}

在主 java 文件和...

<TextView
    android:id="@+id/tvAns"
    android:textSize="100dp"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:text="0" />

<EditText
    android:id="@+id/etKm"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:hint="Km"
    android:textSize="100dp"
    android:inputType="numberSigned" />

<Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="75dp"
    android:text="Km per Litres" />

在 main.xml 文件中。但是,每当我尝试在手机或模拟器上运行应用程序天气时,它会说它已意外停止,请再试一次。我已经尝试了几次,但它只是不起作用。

我知道这可能是一个愚蠢的问题,但我对编程是全新的,如果你能教我我做错了什么,它会帮助我加载。

4

2 回答 2

0

我认为你的主要问题在这里,当你写:

Ans.setText(AnsNum);

您正在尝试调用TextView.setText(int resId),这绝对不是您想要的。相反,正如 Ivan Seidel 所说,你应该打电话给

Ans.setText("" + AnsNum);

使用字符串连接运算符将 AnsNum 转换为 String (此外,编译器将对此进行优化,以不使用连接运算符,而是使用 StringBuilder 类,因为这样更有效)。


此外,而不是这个:

int etKm = new Integer(Km.getText().toString()).intValue();

最好像这样调用类 Integer public static Integer valueOf(String s)的静态方法:

int etKm = Integer.valueOf(Km.getText().toString());

它返回 Integer objet,它会自动转换为int类型

于 2012-08-05T00:19:36.780 回答
0

尝试这个:

Km = (EditText) findViewById(R.id.etKm);
int etKm = Integer.parseInt(Km.getText().toString());
int AnsNum = etKm+etKm;
Ans.setText(AnsNum+"");

我通常只打印数字类型,后跟一个+“”,因为它转换为字符串......

我不能在这里测试它,所以你需要告诉我是否有效

于 2012-08-04T23:49:37.537 回答