java My app在输入值以编辑文本时崩溃,并且没有显示正确的值
我是Android Studio的新手。我已经通过了官方开发者。安卓com training和我决定创建一个名为“杂货店+”的简单新应用程序,用户将在其中输入特定商品的价格和数量,应用程序将显示总金额
我已经完成了所有基于UI的工作,然后今天我转向编程。我是一名经验丰富的Java程序员。我也完成了其中的所有工作,但:
1-当我试图进入第一个应用程序时,我的应用程序崩溃
然后我必须先输入任何其他值,然后再输入第一个值
2-即使在上述黑客攻击之后,我的应用程序也不会在“总计”上显示任何内容
请帮忙:(((
package com.amostrone.akash.grocery;
import 安卓.support.v7.app.AppCompatActivity; import 安卓.os.Bundle; import 安卓.view.View; import 安卓.widget.EditText; import 安卓.widget.TextView;
public class MainActivity extends AppCompatActivity {
static int Quantity[] = new int[4];
static float Price[] = new float[4];
public static double total=0;
static TextView txtValue;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
txtValue = (TextView) findViewById(R.id.txtExample);
}
/////////// QUANTITY
public void input_Quantity(View view) {
EditText x = (EditText) findViewById(R.id.editQuantity);
calc();
}
public void input_Quantity2(View view) {
EditText x = (EditText) findViewById(R.id.editQuantity2);
Quantity[1] = Integer.parseInt(x.toString());
calc();
}
public void input_Quantity3(View view) {
EditText x = (EditText) findViewById(R.id.editQuantity3);
Quantity[2] = Integer.parseInt(x.toString());
calc();
}
public void input_Quantity4(View view) {
EditText x = (EditText) findViewById(R.id.editQuantity4);
Quantity[3] = Integer.parseInt(x.toString());
calc();
}
public void input_Quantity5(View view) {
EditText x = (EditText) findViewById(R.id.editQuantity5);
Quantity[4] = Integer.parseInt(x.toString());
calc();
}
/////////////// Quantity
////////////// Price
public void input_Price(View view) {
EditText x = (EditText) findViewById(R.id.editPrice);
Price[0] = Float.parseFloat(x.toString());
calc();
}
public void input_Price2(View view) {
EditText x = (EditText) findViewById(R.id.editPrice2);
Price[1] = Float.parseFloat(x.toString());
calc();
}
public void input_Price3(View view) {
EditText x = (EditText) findViewById(R.id.editPrice3);
Price[2] = Float.parseFloat(x.toString());
calc();
}
public void input_Price4(View view) {
EditText x = (EditText) findViewById(R.id.editPrice4);
Price[3] = Float.parseFloat(x.toString());
calc();
}
public void input_Price5(View view) {
EditText x = (EditText) findViewById(R.id.editPrice5);
calc();
}
///////////// Price
/////////////// Calculate
public static void calc()
{
for(int i=0;i<=4;i++)
total += (Quantity[i] * Price[i]);
String str = Double.toString(total);
txtValue.setText(str);
}
////////////// Calculate }
# 1 楼答案
我已经创建了不挂起的自定义edittext。 SearchTimerEditText
# 2 楼答案
查看您的代码,您似乎正在触发
EditText
单击事件时获取和计算值(通过xml)。这种方式不起作用,因为它们会立即触发。解决这个问题的方法之一是走TextWatcher
路线。检查以下围绕这一点构建的代码,我也对其进行了一些重构(现在应该不太容易出现内存泄漏):