致命异常:主要在android中

时间:2012-12-29 08:50:02

标签: android

我已阅读过许多关于致命异常的帖子,但没有帮助我

所以我对Android很新,我正在构建一个非常简单的应用程序,允许你点击一个按钮,然后把你带到另一个页面,你可以点击其他按钮但是一旦我在模拟器上运行它我得到一个“应用程序进程意外停止了”,logcat给了我一个致命的例外 代码是

package my.first.pro;

import android.app.Activity;
import android.content.Intent;
 import android.os.Bundle;
  import android.view.*;
  import android.view.View.OnClickListener;

  public class MyfirstproActivity extends Activity  {
  /** Called when the activity is first created. */
  @Override
   public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    View button = this.findViewById(R.layout.main); 
    button.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {
            Intent i = new Intent ( MyfirstproActivity.this, Second.class );
        }
    });
}

}

XML文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:orientation="vertical" >


  <Button
    android:id="@+id/button"
    android:layout_width="233dp"
    android:layout_height="wrap_content"
    android:text="view health care services " />

   </LinearLayout>

第二项活动

   package my.first.pro;

   import android.app.Activity;
   import android.os.Bundle;

    public class Second extends Activity {

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // TODO Auto-generated method stub
}

}

第二个活动xml文件

  <?xml version="1.0" encoding="UTF-8"?>
  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:baselineAligned="false"
  android:orientation="vertical" >

  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:orientation="vertical" 
   >

   <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
       android:text="The following the health care services provided :" /> <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

         </TextView>


    <Button

    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical" 
    android:text="General"/>
   </LinearLayout>


  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
   android:orientation="vertical" 
    >

    <Button

      android:layout_width="wrap_content"
    android:layout_height="wrap_content"
     android:orientation="vertical" 
     android:text="physciatric"/>
     </LinearLayout>

  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
   android:layout_height="wrap_content"
    android:orientation="vertical" 
       >

    <Button

      android:layout_width="wrap_content"
    android:layout_height="wrap_content"
      android:orientation="vertical" 
      android:text="pediatric"/>
     </LinearLayout>
       <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
       android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" 
         >

       <Button

      android:layout_width="wrap_content"
    android:layout_height="wrap_content"
       android:orientation="vertical" 
      android:text="dental"/>
      </LinearLayout>
       </LinearLayout>

logcat是

  12-29 11:15:10.508: E/AndroidRuntime(438): FATAL EXCEPTION: main
    12-29 11:15:10.508: E/AndroidRuntime(438): java.lang.RuntimeException: Unable to start activityComponentInfo{my.first.pro/my.first.pro.MyfirstproActivity}: java.lang.NullPointerException
    12-29 11:15:10.508: E/AndroidRuntime(438):  at    android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
     12-29 11:15:10.508: E/AndroidRuntime(438):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
     12-29 11:15:10.508: E/AndroidRuntime(438):     at android.app.ActivityThread.access$1500(ActivityThread.java:117)
    12-29 11:15:10.508: E/AndroidRuntime(438):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
    12-29 11:15:10.508: E/AndroidRuntime(438):  at android.os.Handler.dispatchMessage(Handler.java:99)
    12-29 11:15:10.508: E/AndroidRuntime(438):  at android.os.Looper.loop(Looper.java:123)
    12-29 11:15:10.508: E/AndroidRuntime(438):  at android.app.ActivityThread.main(ActivityThread.java:3683)
    12-29 11:15:10.508: E/AndroidRuntime(438):  at java.lang.reflect.Method.invokeNative(Native Method)
    12-29 11:15:10.508: E/AndroidRuntime(438):  at java.lang.reflect.Method.invoke(Method.java:507)
    12-29 11:15:10.508: E/AndroidRuntime(438):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
    12-29 11:15:10.508: E/AndroidRuntime(438):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
    12-29 11:15:10.508: E/AndroidRuntime(438):  at dalvik.system.NativeStart.main(Native Method)
    12-29 11:15:10.508: E/AndroidRuntime(438): Caused by: java.lang.NullPointerException
    12-29 11:15:10.508: E/AndroidRuntime(438):  at my.first.pro.MyfirstproActivity.onCreate(MyfirstproActivity.java:16)
     12-29 11:15:10.508: E/AndroidRuntime(438):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
    12-29 11:15:10.508: E/AndroidRuntime(438):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
    12-29 11:15:10.508: E/AndroidRuntime(438):  ... 11 more
    12-29 11:15:24.829: E/AndroidRuntime(448): FATAL EXCEPTION: main
    12-29 11:15:24.829: E/AndroidRuntime(448): java.lang.RuntimeException: Unable to start activity ComponentInfo{my.first.pro/my.first.pro.MyfirstproActivity}: java.lang.NullPointerException
    12-29 11:15:24.829: E/AndroidRuntime(448):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
    12-29 11:15:24.829: E/AndroidRuntime(448):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
   12-29 11:15:24.829: E/AndroidRuntime(448):   at android.app.ActivityThread.access$1500(ActivityThread.java:117)
   12-29 11:15:24.829: E/AndroidRuntime(448):   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
    12-29 11:15:24.829: E/AndroidRuntime(448):  at android.os.Handler.dispatchMessage(Handler.java:99)
    12-29 11:15:24.829: E/AndroidRuntime(448):  at android.os.Looper.loop(Looper.java:123)
    12-29 11:15:24.829: E/AndroidRuntime(448):  at android.app.ActivityThread.main(ActivityThread.java:3683)
    12-29 11:15:24.829: E/AndroidRuntime(448):  at java.lang.reflect.Method.invokeNative(Native Method)
    12-29 11:15:24.829: E/AndroidRuntime(448):  at java.lang.reflect.Method.invoke(Method.java:507)
    12-29 11:15:24.829: E/AndroidRuntime(448):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
    12-29 11:15:24.829: E/AndroidRuntime(448):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
    12-29 11:15:24.829: E/AndroidRuntime(448):  at dalvik.system.NativeStart.main(Native Method)
    12-29 11:15:24.829: E/AndroidRuntime(448): Caused by: java.lang.NullPointerException
    12-29 11:15:24.829: E/AndroidRuntime(448):  at my.first.pro.MyfirstproActivity.onCreate(MyfirstproActivity.java:16)
    12-29 11:15:24.829: E/AndroidRuntime(448):  at andr  oid.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
    12-29 11:15:24.829: E/AndroidRuntime(448):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
    12-29 11:15:24.829: E/AndroidRuntime(448):  ... 11 more

4 个答案:

答案 0 :(得分:3)

下面

View button = this.findViewById(R.layout.main); 

您正试图以错误的方式在“活动”布局中查找“视图”。在布局xml中查找View的正确方法是:

 Button button = (Button)findViewById(R.id.button); 

并且始终将所有UI控件声明为类级别字段而不是内部方法,因为如果在类级别声明所有元素,则可以在整个Activity中访问它。

修改

始终使用此活动模板声明或初始化Ui元素,以便在整个活动中获得更好的UI元素可访问性:

 public class MyfirstproActivity extends Activity  {
  /** Called when the activity is first created. */

  //******* ALWAYS DECLARE UI ELEMENTS HERE ********** //

Button button ; //<<< for example 


  @Override
   public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

   //** ALWAYS SET  layout FOR ACTIVITY BEFORE INITIALIZING UI ELEMENTS **
    setContentView(R.layout.main);

   //**** ALWAYS  INITILIZING UI ELEMENTS IN SIDE onCreate of Activity *** //
     button = (Button)findViewById(R.id.button); 

   }

}

答案 1 :(得分:1)

您以错误的方式声明按钮, 更改此行,

View button = this.findViewById(R.layout.main);

像这样

Button button = this.findViewById(R.id.button); 

还必须为第二个Acitvity添加此行

setContentView(int layoutid);

像这样

setContentView(R.layout.main) //First page layout

此方法可帮助我们显示活动的布局,此方法可确定要向用户显示的布局或视图。

答案 2 :(得分:0)

您必须在此

之后添加以下声明
 Intent i = new Intent ( MyfirstproActivity.this, Second.class );

 startActivity(i);  //this will start the new activity.

答案 3 :(得分:-1)

更改行

View button = this.findViewById(R.layout.main);

到此:

View button = this.findViewById(R.id.button);