user1936104
user1936104

Reputation: 61

fatal exception : main in android

I've read many of the previous posts regarding fatal exceptions but non helped me

So i'm very new to android and I'm building a very simple app that allows u to click a button and takes u to another page where u can click other buttons but once i run it on the emulator i get a "the application process has stopped unexpectedly" and the logcat gives me a fatal exception the code is

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 );
        }
    });
}

}

the XML file

<?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>

the second activity

   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
}

}

THe second activity xml file

  <?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>

the logcat is

  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

Upvotes: 0

Views: 17406

Answers (4)

Yohan Malshika
Yohan Malshika

Reputation: 733

You declare button in wrong way, change this line,

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

like this,

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

Also u must add this line for second Acitvity,

setContentView(int layoutid);

like this,

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

This method helps us to display the activity’s layout and this method determines which layout or view to display to the user.

Upvotes: 1

ρяσѕρєя K
ρяσѕρєя K

Reputation: 132982

Here

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

you are trying to find a View in Activity layout in wrong way . proper way for finding a View in layout xml is :

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

and always declare all UI control as class level fields instead of inside method because if you declare all elements at class level then you can access it in whole Activity.

EDIT:

always use this Activity Template for Declaring or initializing Ui elements for better UI elements accessibility in whole Activity :

 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); 

   }

}

Upvotes: 3

Brinda K
Brinda K

Reputation: 765

You have to add below statement after this

 Intent i = new Intent ( MyfirstproActivity.this, Second.class );

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

Upvotes: 0

Philip Sheard
Philip Sheard

Reputation: 5825

Change the line

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

to this:

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

Upvotes: -1

Related Questions