user9718332
user9718332

Reputation:

How can I redirect 2 buttons to different intents in android?

enter image description here

I put a listener on each button that takes me to different activities. The login button works perfectly, but the register button stops the app when I click on it.

I've tried to put a Toast message in the _btnreg listener, and it worked...

I got this error:

E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.android.virtualshelter, PID: 24128 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.android.virtualshelter/com.example.android.virtualshelter.register}: 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:2726) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2787) at android.app.ActivityThread.-wrap12(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1504) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6247) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:872) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:762) 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.android.virtualshelter.register.onCreate(register.java:35) at android.app.Activity.performCreate(Activity.java:6754) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2679) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2787)  at android.app.ActivityThread.-wrap12(ActivityThread.java)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1504)  at android.os.Handler.dispatchMessage(Handler.java:102)  at android.os.Looper.loop(Looper.java:154)  at android.app.ActivityThread.main(ActivityThread.java:6247)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:872)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:762) 

package com.example.android.virtualshelter;
import android.content.ContentValues;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.*;   
public class MainActivity extends AppCompatActivity
{
Button _btnreg, _btnlogin;

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    _btnlogin  = findViewById(R.id.btnlogin);
    _btnreg    = findViewById(R.id.btnreg);

    _btnreg.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            Intent intent = new Intent(MainActivity.this,register.class);
            startActivity(intent);
        }
    });

    _btnlogin.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            Intent intent = new Intent(MainActivity.this,login.class);
            startActivity(intent);
        }
    });
}
}

My register.java code

package com.example.android.virtualshelter;

import android.content.ContentValues;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class register extends AppCompatActivity
{

SQLiteOpenHelper openHelper;
SQLiteDatabase db;
Button _btnReg;
EditText _txtfname, _txtlname, _txtpass, _txtemail, _txtphone;

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_register);

    openHelper = new DatabaseHelper(register.this);
    _txtfname  = findViewById(R.id.txtfname);
    _txtlname  = findViewById(R.id.txtlname);
    _txtpass   = findViewById(R.id.txtpass);
    _txtemail  = findViewById(R.id.txtemail);
    _txtphone  = findViewById(R.id.txtphone);
    _btnReg    = findViewById(R.id.btnreg);

    _btnReg.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            db = openHelper.getWritableDatabase();
            String fname = _txtfname.getText().toString();
            String lname = _txtlname.getText().toString();
            String pass = _txtpass.getText().toString();
            String email = _txtemail.getText().toString();
            String phone = _txtphone.getText().toString();
            insertdata(fname, lname, pass, email, phone);
            Toast.makeText(getApplicationContext(), "register successfully", Toast.LENGTH_LONG).show();

        }
    });
}

public void insertdata(String fname, String lname, String pass, String email, String phone)
{
    ContentValues contentValues = new ContentValues();
    contentValues.put(DatabaseHelper.COL_2, fname);
    contentValues.put(DatabaseHelper.COL_3, lname);
    contentValues.put(DatabaseHelper.COL_4, pass);
    contentValues.put(DatabaseHelper.COL_5, email);
    contentValues.put(DatabaseHelper.COL_6, phone);
    long id = db.insert(DatabaseHelper.TABLE_NAME, null, contentValues);
}
 }

I expect to go to activity register.java, but the app is crashing

Upvotes: 0

Views: 57

Answers (1)

N0000B
N0000B

Reputation: 449

My hunch is, you are not able find the button, causing a NPE when setting the listner. Could be that you don't have the button defined in R.layout.activity_main, but in a different layout.

Upvotes: 0

Related Questions