我正在尝试构建一个简单的计算器来学习Android编程。我的UI已全部排序,但是"提交"按钮似乎不起作用,它应该对两个用户提交的值执行逻辑并输出结果。
以下是方法:
@Override
public void onClick(View view){
String num1 = etfirst.getText().toString();
String num2 = etsecond.getText().toString();
String amount = etamount.getText().toString();
switch(view.getId()){
case R.id.btnSubmit:
int divide = (Integer.parseInt(num2) / Integer.parseInt(num1)) +1;
int multiply = divide * Integer.parseInt(amount);
tvResult.setText(String.valueOf(multiply));
break;
}
}
我已经预先声明了所有变量并初始化它们。所有变量名称都匹配,但UI中元素的ID匹配,所以我不确定问题是什么。
以下是请求的logcat:http://i.imgur.com/6QWiuzA.png。发布到Imgur,因为发布图像需要10个声望。
答案 0 :(得分:0)
news
答案 1 :(得分:0)
从解释和日志中,我可以清楚地看到它是一个空指针问题;可能是由于没有正确引用按钮或文本视图引起的。
在string ConvertIDToReg(string kairosID)
{
int id;
if (!Int32.TryParse(kairosID, out id) || id > 9999)
{
return "0";
}
return id.ToString("D5");
}
中确保您拥有此内容:
onCreate
确保XML文件中的资源ID与您的引用匹配 对于显示输出的textView,请获取正确的引用,如
Button button = (Button) findViewById(R.id.enter_button);
button.setOnclickListener(this);
再次确保您拥有正确的XML资源ID(引用)
然后应该解决空指针。
仔细检查您的整个代码,确保您获得了按钮和textView的正确参考。
答案 2 :(得分:0)
试试这个:
Button btnSubmit;
TextView tvResult;
EditText etfirst,etsecond,etamount;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnSubmit = (Button) findViewById(R.id.btnSubmit);
tvResult = (TextView)findViewById(R.id.tvResult);
etfirst = (EditText)findViewById(R.id.etFirst);
etsecond = (EditText)findViewById(R.id.etSecond);
etamount = (EditText)findViewById(R.id.etAmount); //You wasnt definind this in the original code
btnSubmit.setOnClickListener(this);
}
@Override
public void onClick(View view){
String num1 = etfirst.getText().toString();
String num2 = etsecond.getText().toString();
String amount = etamount.getText().toString();
switch(view.getId()){
case R.id.btnSubmit:
int divide = (Integer.parseInt(num2) / Integer.parseInt(num1)) +1;
int multiply = divide * Integer.parseInt(amount);
tvResult.setText(String.valueOf(multiply));
break;
}
}