I am trying to find out how to multiply the values of two spinners and display the answer within a TextView. The code compiles, however, the application shuts down when ran. The code below is what I am currently using, however, it does not work. Thanks.
spinnerStep1 =(Spinner) findViewById(R.id.step_1_spinner);
Integer[] step1 = new Integer[]{0,1,2,3,4,5};
ArrayAdapter<Integer> adapter1 = new ArrayAdapter<Integer> (this,R.layout.spinner_item, step1);
spinnerStep1.setAdapter(adapter1);
spinnerStep1.setOnItemSelectedListener(this);
spinnerStep2 =(Spinner) findViewById(R.id.step_2_spinner);
Integer[] step2 = new Integer[]{0,1,2,3,4,5};
ArrayAdapter<Integer> adapter2 = new ArrayAdapter<Integer>(this,R.layout.spinner_item, step2);
spinnerStep2.setAdapter(adapter2);
spinnerStep2.setOnItemSelectedListener(this);
drakeAnswer = (TextView) findViewById(R.id.drake_answer);
}
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
String myStr1 = spinnerStep1.getSelectedItem().toString();
String myStr2 = spinnerStep2.getSelectedItem().toString();
int myAnswer = 0;
try {
myAnswer = Integer.parseInt(myStr1) * Integer.parseInt(myStr2);
}catch(NumberFormatException nfe) {
}
drakeAnswer.setText(myAnswer);
}
Best practice would be to fetch the two spinners and the text view again from within your onItemSelected method and you will need to also make sure you set a string value in the setText method:
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
Spinner spinnerStep1 = (Spinner)findViewById(R.id.step_1_spinner);
Spinner spinnerStep2 = (Spinner)findViewById(R.id.step_2_spinner);
String myStr1 = spinnerStep1.getSelectedItem().toString();
String myStr2 = spinnerStep2.getSelectedItem().toString();
int myAnswer = 0;
try {
myAnswer = Integer.parseInt(myStr1) * Integer.parseInt(myStr2);
} catch(NumberFormatException nfe) {
Log.e("Error", "Failed to multiply invalid non-numbers");
}
TextView drakeAnswer = (TextView)findViewById(R.id.drake_answer);
drakeAnswer.setText("" + myAnswer);
}
The problem may lie in this line
drakeAnswer.setText(myAnswer);
The setText method of TextView is overloaded, and one of them is :
setText(int resid)
Which is the one you are currently calling, and there probably isn't a resId like the one you are passing. If you want to write myAnswer in the TextView , pass it as String :
drakeAnswer.setText(myAnswer);
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.