Приложение вылетает при вызове значения Spinner в расчете?
import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.SpinnerAdapter;
import android.widget.TextView;
public class calctest extends Activity {
/** Called when the activity is first created. */
private EditText input;
private EditText input2;
private EditText input3;
private EditText input4;
private TextView output;
private TextView output2;
private Spinner aperture;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Extract the text fields from the XML layout
input = (EditText) findViewById(R.id.input1);
input2 = (EditText) findViewById(R.id.input2);
input3 = (EditText) findViewById(R.id.input3);
input4 = (EditText) findViewById(R.id.input4);
output = (TextView) findViewById(R.id.result);
output2 = (TextView) findViewById(R.id.result2);
//aperture dropdown
final Spinner aperture = (Spinner) findViewById(R.id.apt);
ArrayAdapter adapter = ArrayAdapter.createFromResource(
this, R.array.apertures, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
aperture.setAdapter(adapter);
Spinner mode = (Spinner) findViewById(R.id.mode);
ArrayAdapter adapter2 = ArrayAdapter.createFromResource(
this, R.array.formats, android.R.layout.simple_spinner_item);
adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mode.setAdapter(adapter2);
// Perform calculation when button is pushed
final Button button = (Button) findViewById(R.id.calculate);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
doCalculation(aperture.getSelectedItem());
}
});
}
private void doCalculation(Object selectedItem) {
// Get entered input value
String cinput1 = input.getText().toString();
String cinput2 = input2.getText().toString();
String cinput3 = input3.getText().toString();
String cinput4 = input4.getText().toString();
Object cinput5 = aperture.getSelectedItem();
}
}
Я знаю, что метод doCalculation на самом деле еще ничего не вычисляет, потому что приложение вылетает просто из-за попытки получить значение ввода. Если я отключу строку cinput5, она будет работать нормально. Что я здесь не так делаю? И на этой ноте, как мне преобразовать значение счетчика в строку для использования в расчете?
Кроме того, в качестве двойной проверки... счетчик отображает список чисел (1.4, 2, 2.8, 4, 5.6 и т. Д.), И любое выбранное число является числом, которое мне нужно использовать в расчете. Я звоню правильное значение от счетчика, верно?
Я прошу прощения за, вероятно, чрезвычайно очевидные ошибки. Я только начал Java, и после того, как я закончу это приложение, я обещаю, что получу книгу!
1 ответ
Вы декларируете aperture
дважды, один раз в начале вашего кода и снова внутри onCreate
метод.
В этой строке:
final Spinner aperture = (Spinner) findViewById(R.id.apt);
попробуйте удалить final Spinner
,
Когда приложение достигает последней строки метода doCalculation, оно, скорее всего, выбрасывает нулевую ссылку на объект, поскольку оно ссылается на экземпляр частной апертуры, который еще не создан.