2012-12-26 43 views
2

如何簡單顯示另一個xml文件?我創建了一個新的活動電話about.java來做到這一點,但它墜毀與NullPointerException。這是我的主類調用about.class投擲NullPointerException的新活動

public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case 1: 
      Log.d("**MYLOG**", "Refresh clicked .. "); 
      Intent intent = new Intent(this, MainActivity.class); 
      this.startActivity(intent); 
      return true; 
     case 2: 
      //setContentView(R.layout.about); 
      Log.d("**MYLOG**", "About clicked .. "); 
      Intent intent2 = new Intent(this, About.class); 
      this.startActivity(intent2); 
      return true; 

這裏是我的about.class

public class About extends Activity { 

public About() { 
    Log.d("**MYLOG**", "Inside About.java .."); 
    setContentView(R.layout.about); 

} 
} 

和我about.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="horizontal"> 
     <TextView 
     android:id="@+id/textView1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:textStyle="bold" 
     android:typeface="sans" 
     android:textSize="18dp" 
     android:text="About page" 
     android:gravity="center"></TextView> 

這是我的日誌:

12-26 14:28:43.560: D/**MYLOG**(1141): Inside About.java .. 
12-26 14:28:43.560: D/AndroidRuntime(1141): Shutting down VM 
12-26 14:28:43.560: W/dalvikvm(1141): threadid=1: thread exiting with uncaught exception (group=0x40a13300) 
12-26 14:28:43.600: E/AndroidRuntime(1141): FATAL EXCEPTION: main 
12-26 14:28:43.600: E/AndroidRuntime(1141): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{wia.home/wia.home.About}: java.lang.NullPointerException 
12-26 14:28:43.600: E/AndroidRuntime(1141):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1983) 
12-26 14:28:43.600: E/AndroidRuntime(1141):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084) 
12-26 14:28:43.600: E/AndroidRuntime(1141):  at android.app.ActivityThread.access$600(ActivityThread.java:130) 
12-26 14:28:43.600: E/AndroidRuntime(1141):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195) 
12-26 14:28:43.600: E/AndroidRuntime(1141):  at android.os.Handler.dispatchMessage(Handler.java:99) 
12-26 14:28:43.600: E/AndroidRuntime(1141):  at android.os.Looper.loop(Looper.java:137) 
12-26 14:28:43.600: E/AndroidRuntime(1141):  at android.app.ActivityThread.main(ActivityThread.java:4745) 
12-26 14:28:43.600: E/AndroidRuntime(1141):  at java.lang.reflect.Method.invokeNative(Native Method) 
12-26 14:28:43.600: E/AndroidRuntime(1141):  at java.lang.reflect.Method.invoke(Method.java:511) 
12-26 14:28:43.600: E/AndroidRuntime(1141):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
12-26 14:28:43.600: E/AndroidRuntime(1141):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
12-26 14:28:43.600: E/AndroidRuntime(1141):  at dalvik.system.NativeStart.main(Native Method) 
12-26 14:28:43.600: E/AndroidRuntime(1141): Caused by: java.lang.NullPointerException 
12-26 14:28:43.600: E/AndroidRuntime(1141):  at android.app.Activity.setContentView(Activity.java:1867) 
+0

您是否在清單文件中定義了有關活動的內容?這是我經常碰到的一個錯誤。 –

回答

0

奇怪的是,日誌沒有指定引發NullPointerException的行。我可以在你的代碼中看到的是,你需要在onCreate中調用setContentView,而不是在構造函數中。試試看看是否可以解決問題。

0

始終將其設置爲Activity內容視圖中onCreate回調:

public class About extends Activity { 

    public void onCreate(Bundle saved) { 
     super.onCreate(saved); 
     Log.d("**MYLOG**", "Inside About.java .."); 
     setContentView(R.layout.about); 
    } 
} 

你不應該嘗試使用Activity的構造函數,初始化Activity先從onCreate方法,爲Context是從此回調中有效。

+0

我得到「onCreate(Bundle保存)缺少返回類型的方法」 – user1930170

+0

@ user1930170返回類型是'void'。檢查我的答案。 – Luksprog

+0

謝謝。之後我添加達空虛我還沒有得到任何顯示。我發現我的XML文件不正確。我創建了一個新的,它工作正常。非常感謝您的幫助 – user1930170