public class MainActivity extensions AppCompatActivity {
EditText actv;
Button bt, total;
ListView lt;
String getInput;
ArrayAdapter adapter;
TextView tv;
整数,总和 =0; final ArrayList addArray = new ArrayList((;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
actv = (EditText) findViewById(R.id.autoCompleteTextView) ;
bt = (Button) findViewById(R.id.button);
total = (Button)findViewById(R.id.btt) ;
tv = (TextView) findViewById(R.id.textView);
lt = (ListView) findViewById(R.id.listView);
按钮创建包含数字的列表视图
bt.setOnClickListener(new View.OnClickListener(( { @Override
public void onClick(View view) {
getInput = actv.getText().toString();
num = Integer.valueOf(getInput);
addArray.add(num);
adapter = new ArrayAdapter(MainActivity.this,
android.R.layout.simple_list_item_1,addArray);
lt.setAdapter(adapter);
((EditText) findViewById(R.id.autoCompleteTextView)).setText("");
}
}(;
另一个按钮来计算所有数字的总和
total.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
for (int i = 0; i <addArray.size() ; i++) {
sum = sum + addArray.get(i);
}
tv.setText(sum);
}
});
当我在 EditText 中输入多个数字时,它会按预期显示在 ListView 中,但单击按钮后应用程序崩溃并且不执行加法
你永远不应该假设你的数组是有效的,而不先检查它们......尝试添加一些安全措施:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
actv = (EditText) findViewById(R.id.autoCompleteTextView) ;
bt = (Button) findViewById(R.id.button);
total = (Button)findViewById(R.id.btt) ;
tv = (TextView) findViewById(R.id.textView);
lt = (ListView) findViewById(R.id.listView);
addArray = new ArrayList();
。
public void onClick(View view) {
getInput = actv.getText().toString();
num = Integer.valueOf(getInput);
if (addArray !=null) {
addArray.add(num);
adapter = new ArrayAdapter(MainActivity.this,
android.R.layout.simple_list_item_1,addArray);
lt.setAdapter(adapter);
}
((EditText) findViewById(R.id.autoCompleteTextView)).setText("");
}
。
total.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if ((addArray != null) && (addArray.size() > 0)) {
for (int i = 0; i <addArray.size() ; i++) {
sum = sum + addArray.get(i);
}
tv.setText(sum);
}
}
});