在类OilPlots中我有以下方法,它应该加载Activity BoPlots:
OnClickListener OilList = new OnClickListener() {
public void onClick(View view) {
Intent intent = new Intent(OilPlots.this, BoPlots.class);
startActivity(intent);
}
};
以下是BoPlots的onCreate()方法:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_bo_plots);
setup();
color(button4, R.id.buttonLayout ,R.id.button4);
Button btn = (Button)findViewById(R.id.bo);
btn.setOnClickListener(BoList);
}
我第一次加载Activity BoPlots时它加载正常,但如果我尝试从OilPlots类访问它,它会崩溃应用程序。 logcat如下:
08-18 22:06:15.649: E/AndroidRuntime(32339): FATAL EXCEPTION: main
08-18 22:06:15.649: E/AndroidRuntime(32339): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.resengin/com.example.resengin.BoPlots}: java.lang.NullPointerException
08-18 22:06:15.649: E/AndroidRuntime(32339): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
08-18 22:06:15.649: E/AndroidRuntime(32339): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
08-18 22:06:15.649: E/AndroidRuntime(32339): at android.app.ActivityThread.access$600(ActivityThread.java:130)
08-18 22:06:15.649: E/AndroidRuntime(32339): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
08-18 22:06:15.649: E/AndroidRuntime(32339): at android.os.Handler.dispatchMessage(Handler.java:99)
08-18 22:06:15.649: E/AndroidRuntime(32339): at android.os.Looper.loop(Looper.java:137)
08-18 22:06:15.649: E/AndroidRuntime(32339): at android.app.ActivityThread.main(ActivityThread.java:4745)
08-18 22:06:15.649: E/AndroidRuntime(32339): at java.lang.reflect.Method.invokeNative(Native Method)
08-18 22:06:15.649: E/AndroidRuntime(32339): at java.lang.reflect.Method.invoke(Method.java:511)
08-18 22:06:15.649: E/AndroidRuntime(32339): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
08-18 22:06:15.649: E/AndroidRuntime(32339): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
08-18 22:06:15.649: E/AndroidRuntime(32339): at dalvik.system.NativeStart.main(Native Method)
08-18 22:06:15.649: E/AndroidRuntime(32339): Caused by: java.lang.NullPointerException
08-18 22:06:15.649: E/AndroidRuntime(32339): at java.lang.StringToReal.parseFloat(StringToReal.java:285)
08-18 22:06:15.649: E/AndroidRuntime(32339): at java.lang.Float.parseFloat(Float.java:300)
08-18 22:06:15.649: E/AndroidRuntime(32339): at java.lang.Float.valueOf(Float.java:337)
08-18 22:06:15.649: E/AndroidRuntime(32339): at com.example.resengin.BoResults.onCreate(BoResults.java:74)
08-18 22:06:15.649: E/AndroidRuntime(32339): at com.example.resengin.BoPlots.onCreate(BoPlots.java:20)
08-18 22:06:15.649: E/AndroidRuntime(32339): at android.app.Activity.performCreate(Activity.java:5008)
08-18 22:06:15.649: E/AndroidRuntime(32339): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
08-18 22:06:15.649: E/AndroidRuntime(32339): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
08-18 22:06:15.649: E/AndroidRuntime(32339): ... 11 more
据我所知,崩溃的原因是:
08-18 22:06:15.649: E/AndroidRuntime(32339): Caused by: java.lang.NullPointerException
08-18 22:06:15.649: E/AndroidRuntime(32339): at java.lang.StringToReal.parseFloat(StringToReal.java:285)
导致崩溃,因为该变量尚未实例化。 这似乎引用的代码行在Activity BoResults中。此活动的onCreate方法如下:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_bo_results);
setup();
color(button3, R.id.buttonLayout ,R.id.button3);
txt1=(TextView)findViewById(R.id.results).findViewById(R.id.editText1);
txt2=(TextView)findViewById(R.id.results).findViewById(R.id.editText2);
txt3=(TextView)findViewById(R.id.results).findViewById(R.id.editText3);
Intent intent = getIntent();
Float Pressure = Float.valueOf(intent.getStringExtra("V1"));
Float Temp = Float.valueOf(intent.getStringExtra("V2"));
Float STOG = Float.valueOf(intent.getStringExtra("V3"));
Float SG = Float.valueOf(intent.getStringExtra("V4"));
Float SGOR = Float.valueOf(intent.getStringExtra("V5"));
txt1.setText(String.valueOf(Pressure));
txt2.setText(String.valueOf(Temp));
txt3.setText(String.valueOf(STOG));
spreadsheet();
}
但我不明白为什么要调用它,因为代码中没有任何内容可以引用BoResults Activity中的任何内容,或者调用任何方法。 BoPlots确实扩展了BoResults
答案 0 :(得分:2)
所以BoPlots扩展了BoResults?在您的BoPlots onCreate方法中,您将调用super.onCreate,它将调用BoResults版本。因此,如果您没有为BoResults需要的BoPlots意图添加相同的额外内容,它将崩溃。听起来你不应该扩展BoResults。
答案 1 :(得分:0)
getStringExtra
返回null
。如果您尝试将null
转换为float
,则应用程序将崩溃