我对App制作完全陌生,我想制作一些有两个EditTexts(仅限数字)的东西,然后将它们分割并转换成百分比并显示在TextView中。不幸的是,我不知道我在做什么是正确的。这是我的代码
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.widget.EditText;
import android.widget.TextView;
public class FirstInformation extends Activity {
EditText eT4 = (EditText)findViewById(R.id.editText4);
EditText eT5 = (EditText)findViewById(R.id.editText5);
TextView tV6 = (TextView)findViewById(R.id.textView6);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_first_information);
if (eT4 != null && eT5 != null){
double numerator = (double) Integer.parseInt(eT4.getText().toString());
double denominator = (double) Integer.parseInt(eT5.getText().toString());
double textView = Math.round(numerator/denominator)*100;
tV6.setText(textView+"");
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.first_information, menu);
return true;
}
public void updateTextView() {
if (eT4 != null && eT5 != null){
double numerator = (double) Integer.parseInt(eT4.getText().toString());
double denominator = (double) Integer.parseInt(eT5.getText().toString());
double textView = Math.round(numerator/denominator)*100;
tV6.setText(textView+"");
}
return;
}
}
任何反馈都会很棒。非常感谢你!
答案 0 :(得分:0)
答案 1 :(得分:0)
您的问题在于以下代码:
EditText eT4 = (EditText)findViewById(R.id.editText4);
EditText eT5 = (EditText)findViewById(R.id.editText5);
TextView tV6 = (TextView)findViewById(R.id.textView6);
findViewById
方法为所有这些调用返回null
,因为您在setContentView
方法完成之前正在执行与UI相关的任务。因此,您可以在那里声明变量,然后在setContentView
方法之后初始化它们。
答案 2 :(得分:0)
正如其他人所说,findViewById()
调用进入onCreate()
方法,否则它们将返回null。
另一件事:永远不会调用updateTextView()
。您可以使用TextWatcher或仅使用onClickListener:
tv6.setOnClickListener(new onClickListener() {
@Override
public void onClick(View v) {
updateTextView();
}
});
每次单击结果textView时,结果都会更新。顺便说一句,使用TextWatcher(使用afterTextChanged()
方法)是一种更好的做法。我建议你参考指南/教程并尝试一下;)