Reputation: 61
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
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
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
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
Reputation: 5825
Change the line
View button = this.findViewById(R.layout.main);
to this:
View button = this.findViewById(R.id.button);
Upvotes: -1