計算にスピナー値を呼び出すときにアプリケーションがクラッシュしますか?

StackOverflow https://stackoverflow.com/questions/2136136

  •  22-09-2019
  •  | 
  •  

質問

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のを始め、私はこのアプリは、の約束は、私が本を取得します!

終了した後、
役に立ちましたか?

解決

あなたは一度あなたのコードの先頭にして、再度apertureメソッド内で、二回onCreateを宣言しています。

この行には、

final Spinner aperture = (Spinner) findViewById(R.id.apt);

final Spinnerを削除してみてください。

アプリは、それがまだインスタンス化されなければならないプライベートアパーチャ・インスタンスを参照しているので、それが最も可能性が高いヌル・オブジェクト参照を投げているdoCalculation方法の最後の行に到達したとき。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top