Reputation: 35
Hi guys i am using 3 activities in my android app which are
1.main_activity
2.Secondactivity
3.Third Activity
I am facing problem when i try to open the Second activity from main activity via a button click on main activity. The app crashes and dose not work
I also need to open my Third Activity via a Button click on Second Activity When it is opened
As i am new to android coding am not able to understand where i am doing wrong in my coding. I would like to seek info about and also need any one who can help me out with this
Thanks in advance
Below is the complete code and the Error am getting is this
07-27 12:13:51.887 23039-23039/com.example.mohammadzakriya.tech_bgkapp E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.mohammadzakriya.tech_bgkapp, PID: 23039
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.mohammadzakriya.tech_bgkapp/com.example.mohammadzakriya.tech_bgkapp.Secondactivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference
at com.example.mohammadzakriya.tech_bgkapp.Secondactivity.OnclickButtonListener(Secondactivity.java:24)
at com.example.mohammadzakriya.tech_bgkapp.Secondactivity.onCreate(Secondactivity.java:19)
at android.app.Activity.performCreate(Activity.java:6237)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method) "**
at java.lang.reflect.Method.invoke(Native Method)
Here is Android main Activity.java file :
package com.example.mohammadzakriya.tech_bgkapp;
import android.content.Intent;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity{
public static Button button_smb;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
OnclickButtonListener();
}
public void OnclickButtonListener(){
button_smb =(Button)findViewById(R.id.button);
button_smb.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent("com.example.mohammadzakriya.tech_bgkapp.Secondactivity");
startActivity(intent);
}
}
);
}
}
Here is Second Activity.java file :
package com.example.mohammadzakriya.tech_bgkapp;
import android.app.Activity;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class Secondactivity extends Activity{
public static Button button_smb1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_secondactivity);
OnclickButtonListener();
}
public void OnclickButtonListener(){
button_smb1 =(Button)findViewById(R.id.button);
button_smb1.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent myintent = new Intent("com.example.mohammadzakriya.tech_bgkapp.ThirdActivity");
startActivity(myintent);
}
}
);
}
}
Main Activity xml file :
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
tools:context="com.example.mohammadzakriya.tech_bgkapp.MainActivity"
android:background="@drawable/frontpic">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Click to proceed"
android:id="@+id/button"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:textStyle="bold|italic|normal"
android:textSize="19dp"
android:background="#d55b26f8"
android:textColor="#e2e0e0" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text=" WELCOME TO BAGALKOT APP"
android:id="@+id/textView"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:textStyle="bold|italic"
android:layout_marginTop="50dp"
android:textSize="25dp"
android:background="#fbe47d0e"
android:textColor="#e2e0e0" />
</RelativeLayout>
Second Activity xml file :
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
tools:context="com.example.mohammadzakriya.tech_bgkapp.Secondactivity"
android:background="#eb5d16ea">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="ELECTRONICS"
android:id="@+id/button2"
android:layout_marginTop="42dp"
android:textStyle="bold|italic|normal"
android:background="#eec16d0d"
android:layout_below="@+id/textView2"
android:layout_alignParentStart="true"
android:textSize="18dp"
android:textColor="#e2e0e0"/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text=" SELECT THE CATEGORY"
android:id="@+id/textView2"
android:layout_alignParentTop="true"
android:layout_alignStart="@+id/button2"
android:layout_marginTop="15dp"
android:textStyle="bold|italic|"
android:background="#fbe47d0e"
android:textColor="#e2e0e0"/>
</RelativeLayout>
Android manifest file :
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.mohammadzakriya.tech_bgkapp">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".MainActivity"
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=".Secondactivity"
android:label="Tech-Bgk App">
<intent-filter>
<action android:name="com.example.mohammadzakriya.tech_bgkapp.Secondactivity" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity android:name=".ThirdActivity"
android:label="Tech-Bgk App">
<intent-filter>
<action android:name="com.example.mohammadzakriya.tech_bgkapp.ThirdActivity" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>
</manifest>
Upvotes: 0
Views: 4197
Reputation: 1761
Please try with code like below
Button click on MainActivity to go to SecondActivity
@Override
public void onClick(View view) {
Intent myintent = new Intent(MainActivity.this, SecondActivity.class);
startActivity(myintent);
}
And Button click on SecondActivity to go to ThirdActivity
@Override
public void onClick(View view) {
Intent myintent = new Intent(SecondActivity.this, ThirdActivity.class);
startActivity(myintent);
}
Edited
Everything in your code is fine except initialization of button_smb1
in Secondactivity.
Please do the change in Secondactivity as
button_smb1 =(Button)findViewById(R.id.button2);
.
Now it will be working. No need to change anything other than.
Upvotes: 1
Reputation: 157
To avoid the new, i prefer use this approch:
public class MyActivity extends AppCompactActivity implents View.OnClickListener{
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
....
button.setOnClickListener(this);
...
}
@Override
public void onClick(View view) {
Intent i;
switch (view.getId()) {
case R.id.button1:
i = new Intent(this, SecondActivity.class);
i.putExtra("extra", 0); //if you want pass some info to other activity
startActivity(i);
break;
default:
break;
}
}
In this way you can handle more onclick in one function, switching by component's id
Upvotes: 0
Reputation: 2652
Use this :
Intent intent = new Intent(MainActivity.this, Secondactivity.class);
startActivity(intent);
In my experience, this is how you move from one Activity
to another Activity
through code.
And one more thing, that's a weird way to add an onClickListener()
, if it's just a simple "First Activity to second Activity" you should just directly declare the Button and set the onClickListener()
Button button_smb =(Button)findViewById(R.id.button);
button_smb.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(this, Secondactivity.class);
startActivity(intent);
}
}
Upvotes: 0
Reputation: 456
Replace below code in your mainActivity file .
button_smb.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(MainActivity.this,Secondactivity.class);
startActivity(intent);
}
}
);
Upvotes: 0
Reputation: 588
Change below code
Main activity to second activity
Intent intent = new Intent(this, Secondactivity.class);
startActivity(intent);
Second activity to third activity
Intent intent = new Intent(this, ThirdActivity.class);
startActivity(intent);
Upvotes: 0
Reputation: 4345
Try like,
Intent intent = new Intent(MainActivity.this, Secondactivity.class);
startActivity(intent);
this should helps you
Upvotes: 0