I am learning the concept of Intents and the application I am working on crashes when i try to go from one intent to another,the intent object is fired on onClickListener() of a button.
Below is the code:
intentdemo.java: first activity
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class intentdemo extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button btn1= (Button) findViewById(R.id.button1);
btn1.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent i = new Intent(intentdemo.this,Intentdemo2.class);
startActivity(i);
}
});
}
}
Intentdemo2.java: Activity 2
package com.test.intent;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class Intentdemo2 extends Activity {
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button btn = (Button)findViewById(R.id.button2);
btn.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
Intent i = new Intent(getBaseContext(),intentdemo.class);
startActivity(i);
}
});
}
}
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.test.intent"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".intentdemo"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".Intentdemo2"></activity>
</application>
</manifest>
main.xml: for first activity
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
<Button
android:text="Button"
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</Button>
</LinearLayout>
layout.xml: for second activity
<?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="match_parent">
<Button android:id="@+id/button2" android:layout_height="wrap_content" android:text="Button" android:layout_width="wrap_content"></Button>
<TextView
android:text="@string/text"
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"></TextView>
</LinearLayout>
I would appreciate if someone can point me towards my mistake here, first Activity is displayed, When i click on button it gives me the message "the activity has stopped unexpectedly", how should I debug in case the error in activity is not intuitive.
Thanks, Sid
Your second activity is loading its layout from main.xml (setContentView(R.layout.main);), but is trying find button with id R.id.button2. There's no such button in the main layout, so attempting to set the click listener is crashing on trying to access null object.
The fix is simple - change the line to setContentView(R.layout.layout);. (On a separate note - change the name of that file from layout.xml to something else)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With