我正在Android中创建多个活动。当我运行应用程序时,它无法连接到其他活动,所以只是想知道。这些是我的代码,我有3个xml文件和3个java文件。
这是logcat日志文件。
log.txt的
05-03 01:57:10.335: E/PhonePolicy(23020): Could not preload class for phone policy: com.android.internal.policy.impl.PhoneWindow$ContextMenuCallback
05-03 01:57:12.665: W/dalvikvm(23020): threadid=1: thread exiting with uncaught exception (group=0x409db1f8)
05-03 01:57:12.705: E/AndroidRuntime(23020): FATAL EXCEPTION: main
05-03 01:57:12.705: E/AndroidRuntime(23020): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.jumoun.itemp/com.jumoun.itemp.Temperature}: java.lang.NullPointerException
05-03 01:57:12.705: E/AndroidRuntime(23020): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1880)
05-03 01:57:12.705: E/AndroidRuntime(23020): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
05-03 01:57:12.705: E/AndroidRuntime(23020): at android.app.ActivityThread.access$600(ActivityThread.java:123)
05-03 01:57:12.705: E/AndroidRuntime(23020): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
05-03 01:57:12.705: E/AndroidRuntime(23020): at android.os.Handler.dispatchMessage(Handler.java:99)
05-03 01:57:12.705: E/AndroidRuntime(23020): at android.os.Looper.loop(Looper.java:137)
05-03 01:57:12.705: E/AndroidRuntime(23020): at android.app.ActivityThread.main(ActivityThread.java:4427)
05-03 01:57:12.705: E/AndroidRuntime(23020): at java.lang.reflect.Method.invokeNative(Native Method)
05-03 01:57:12.705: E/AndroidRuntime(23020): at java.lang.reflect.Method.invoke(Method.java:511)
05-03 01:57:12.705: E/AndroidRuntime(23020): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795)
05-03 01:57:12.705: E/AndroidRuntime(23020): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:562)
05-03 01:57:12.705: E/AndroidRuntime(23020): at dalvik.system.NativeStart.main(Native Method)
05-03 01:57:12.705: E/AndroidRuntime(23020): Caused by: java.lang.NullPointerException
05-03 01:57:12.705: E/AndroidRuntime(23020): at android.app.Activity.findViewById(Activity.java:1794)
05-03 01:57:12.705: E/AndroidRuntime(23020): at com.jumoun.itemp.Temperature.<init>(Temperature.java:14)
05-03 01:57:12.705: E/AndroidRuntime(23020): at java.lang.Class.newInstanceImpl(Native Method)
05-03 01:57:12.705: E/AndroidRuntime(23020): at java.lang.Class.newInstance(Class.java:1319)
05-03 01:57:12.705: E/AndroidRuntime(23020): at android.app.Instrumentation.newActivity(Instrumentation.java:1023)
05-03 01:57:12.705: E/AndroidRuntime(23020): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1871)
05-03 01:57:12.705: E/AndroidRuntime(23020): ... 11 more
05-03 01:57:14.115: I/Process(23020): Sending signal. PID: 23020 SIG: 9
答案 0 :(得分:0)
您不能在课程范围内使用findViewById()
这个方法可能不会在setContentView()
方法之前被调用,如果你在类范围内调用它,它将在创建对象时被调用,所以onCreate()
在你给布局膨胀之前。
将来电findViewById()
移至onCreate()
。
答案 1 :(得分:0)
问题是您需要在致电views
后在方法中设置setContentView()
。这些
ImageButton ibHome2 = (ImageButton) findViewById(R.id.ibHome2);
Button bTempConvert = (Button) findViewById(R.id.bTempConvert);
EditText etCel = (EditText) findViewById(R.id.etCel);
EditText etFah = (EditText) findViewById(R.id.etFah);
应该在这里
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.temperature);
ImageButton ibHome2 = (ImageButton) findViewById(R.id.ibHome2);
Button bTempConvert = (Button) findViewById(R.id.bTempConvert);
EditText etCel = (EditText) findViewById(R.id.etCel);
EditText etFah = (EditText) findViewById(R.id.etFah);
views
中存在layout
,因此您可以尝试通过findViewById()
访问layout
,然后通过调用setContentView()
或通过使用inflater
否则他们将返回null
,因为您的layout
尚不存在