2013-03-15 2 views
2

내 로그 캣은 말하고있다 :왜이 오류가 발생합니까 - RunTimeException : 활동을 인스턴스화 할 수 없습니다?

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)); 
     } 
    }); 
} 

} 

는 희망이 당신이 필요로하는 모든 것입니다 :

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} 

가 여기 내 자바 파일입니다. 추가 코드가 필요한 경우 알려 주시기 바랍니다.

답변

7
는 레이아웃의 View을 찾을 수없는 경우 setContentView(R.layout.activity_number);

findViewById()null을 반환 후 그래서 그들은있는 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); 

이동

. 레이아웃이 없으면 찾아야 할 View이 없습니다. Activity을 처음 인스턴스화 할 때 레이아웃 세트가 없습니다.

+0

오, 정말 고마워. 나는 안드로이드를 처음 사용하므로 부주의 한 실수를하는 경향이 있습니다. –

+1

@ErikBalen 반갑습니다. '대답 '과 다른 뷰가 익명의 내부 클래스에서 액세스되기 때문에 각 뷰의 전체 선언을'onCreate()'내부로 옮기면 그 참조를'final'으로 표시해야합니다. –

관련 문제