Проблема с нажатием кнопки

1

Я начинаю разработку приложений. Моя проблема в том, что когда я запускаю свое приложение, и я нажимаю кнопку "Вычислить", программа останавливается. Код:

public class screen1 extends Activity {
    private EditText name; 
    private CheckBox box1;
    private Spinner spinner;
    private TextView text1, text2, text3, text4, text5, text6;
    private Button calcbutton, closebutton;
    String strength;  

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Spinner hubSpinner = (Spinner) findViewById(R.id.myspinner);
        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource( this, R.array.military_ranks , android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        hubSpinner.setAdapter(adapter);

        name = (EditText)findViewById(R.id.editText1);      
        strength = name.getText().toString();  

        box1 = (CheckBox)findViewById(R.id.checkBox1);

        text1 = (TextView)findViewById(R.id.textView4);
        text2 = (TextView)findViewById(R.id.textView6);
        text3 = (TextView)findViewById(R.id.textView8);
        text4 = (TextView)findViewById(R.id.textView10);
        text5 = (TextView)findViewById(R.id.textView12);
        text6 = (TextView)findViewById(R.id.textView14);

        final Button calcbutton = (Button) findViewById(R.id.button1);
        calcbutton.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                int str = Integer.valueOf(strength);
                int rank = spinner.getSelectedItemPosition()+1;
                double sebzes;
                if(box1.isChecked()){
                    sebzes = (((rank-1)/20+0.3)*((str/10)+40))*1*(1+1/100);
                    text1.setText(Double.toString(sebzes));
                }
                else{
                    sebzes = (((rank-1)/20+0.3)*((str/10)+40))*1;
                    text1.setText(Double.toString(sebzes));
                }
            }
        });

        final Button closebutton = (Button) findViewById(R.id.button2);
        closebutton.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                finish();
            }
        });
    }
}

В компоненте edittext вы можете писать только цифры. Я не знаю, почему он не работает.

  • 0
    Вы должны опубликовать свой журнал. Тогда мы можем увидеть, где код не работает. Я предполагаю, что это проблема: int str = Integer.valueOf (сила);
  • 0
    Что случилось с редактированием вдруг? Это всплывающее окно ужасно.
Показать ещё 1 комментарий
Теги:
button
android-edittext
click

2 ответа

1

Проблема заключается в следующих двух строках:

 int str = Integer.valueOf(strength);
 int rank = spinner.getSelectedItemPosition()+1;

Первый не будет терпеть неудачу, если вы используете только номера в вашем EditText, но было бы лучше убедиться в том, что или, по крайней мере, поймать исключение, которое бросается, когда вы пытаетесь преобразовать символ в числовое значение. Кроме того, вы также можете использовать Integer.valueOf(strength).intValue();, даже если это обычно не требуется.

Реальная проблема - вторая строка. Вы указали переменную spinner, но вы ее не создаете. Вот почему вы получите здесь NullPointerException.

В несвязанной заметке: вы также должны начать свое имя класса с большой буквы, чтобы следовать соглашениям об именах Java.

  • 1
    +1 за ответ без вывода logcat
0

Вы не создаете экземпляр spinner в любом месте, но ссылаетесь на него во второй строке метода нажатия кнопки. Вероятно, пустая ссылочная проблема.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню