2

私のLogCatは言っています:

java.lang.RunTimeException: Unable to instantiate activity ComponentInfo{com.erikbalen.idealgaslawcalculator/com.erikbalen.idealgaslawcalculator.NumberActivity}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity{ActivityThread.java:2121}

これが私のJavaファイルです:

public class NumberActivity extends Activity {

EditText pressure = (EditText) findViewById(R.id.editTextPressure);
EditText temperature = (EditText) findViewById(R.id.editTextTemperature);
EditText volume = (EditText) findViewById(R.id.editTextVolume);
TextView answer = (TextView) findViewById(R.id.textViewSolve);
Button solve = (Button) findViewById(R.id.buttonSolve);

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_number);
    solve.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            double pressureValue = Double.parseDouble(pressure.getText().toString());
            double temperatureValue = Double.parseDouble(temperature.getText().toString());
            double volumeValue = Double.parseDouble(volume.getText().toString());
            double r = 0.0821;
            double answerValue = (pressureValue*volumeValue)/(r*temperatureValue);
            answer.setText(Double.toString(answerValue));
        }
    });
}

}

うまくいけば、それがあなたが必要とするすべてです。追加のコードが必要な場合はお知らせください。

4

1 に答える 1

7

findViewById()通話を移動する

EditText pressure = (EditText) findViewById(R.id.editTextPressure);
EditText temperature = (EditText) findViewById(R.id.editTextTemperature);
EditText volume = (EditText) findViewById(R.id.editTextVolume);
TextView answer = (TextView) findViewById(R.id.textViewSolve);
Button solve = (Button) findViewById(R.id.buttonSolve);

だから彼らは後ですsetContentView(R.layout.activity_number);

findViewById()nullレイアウトでが見つからない場合は戻りViewます。レイアウトがない場合、View見つけることはできません。Activityが最初にインスタンス化されるとき、レイアウトは絶対に設定されていません。

于 2013-03-15T01:22:13.610 に答える