Mohammad Zakriya
Mohammad Zakriya

Reputation: 35

How to go second activity from first activity on button click and Third activity from Second on button click in android

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

Answers (6)

Md Sufi Khan
Md Sufi Khan

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

ghiltanas
ghiltanas

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

Kevin Murvie
Kevin Murvie

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

Sandip Lawate
Sandip Lawate

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

Vinothkumar Nataraj
Vinothkumar Nataraj

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

Sathish Kumar J
Sathish Kumar J

Reputation: 4345

Try like,

Intent intent = new Intent(MainActivity.this, Secondactivity.class);
startActivity(intent);

this should helps you

Upvotes: 0

Related Questions