Android中的多项活动

时间:2013-05-02 18:05:42

标签: android android-activity

我正在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

2 个答案:

答案 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尚不存在