Java:onClick无法在空字段中设置值

时间:2015-08-06 21:19:57

标签: java android

我正在尝试构建一个简单的计算器来学习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个声望。

3 个答案:

答案 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;
    }
}