0

我正在 Android 中创建多个活动。当我运行该应用程序时,它无法连接到其他活动,所以只是想知道。这些是我的代码,我有 3 个 xml 文件和 3 个 java 文件。

这是 logcat 日志文件。

日志.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
4

2 回答 2

0

你不能findViewById()在课堂范围内使用,

此方法可能不会在方法之前setContentView()调用,如果您在类范围内调用它,它将在对象创建时调用,因此onCreate()在您膨胀布局之前。

将呼叫findViewById()移至onCreate()

于 2013-05-02T18:25:35.610 回答
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()layoutsetContentView()inflaternulllayout

于 2013-05-02T18:27:07.877 回答