2012-12-26 46 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