Как я могу перенаправить 2 кнопки для разных намерений в Android? - PullRequest
0 голосов
/ 03 января 2019

введите описание изображения здесь

Я ставлю слушателя на каждую кнопку, которая приводит меня к различным действиям.Кнопка входа в систему работает отлично, но кнопка регистрации останавливает приложение, когда я нажимаю на нее.

Я попытался поместить сообщение Toast в _btnreg listener, и оно сработало ...

Я получил эту ошибку:

E / AndroidRuntime: FATAL EXCEPTION: main Процесс: com.example.android.virtualshelter, PID: 24128 java.lang.RuntimeException: Невозможно запустить действие ComponentInfo{com.example.android.virtualshelter / com.example.android.virtualshelter.register}: java.lang.NullPointerException: попытка вызвать виртуальный метод «void android.widget.Button.setOnClickListener (android.view.View $ OnClickListener)»для ссылки на пустой объект в android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2726) в android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2787) в android.app.ActivityThread.-wrap12 (ActivityThread.java) вandroid.app.ActivityThread $ H.handleMessage (ActivityThread.java:1504) в android.os.Handler.dispatchMessage (Handler.java:102) в android.os.Looper.loop (Looper.java:154) на android.app.ActivityThread.main (ActivityThread.java:6247) на java.lang.reflect.Method.invoke (собственный метод) на com.android.internal.os.ZygoteInit $MethodAndArgsCaller.run (ZygoteInit.java:872) в com.android.internal.os.ZygoteInit.main (ZygoteInit.java:762) Причина: java.lang.NullPointerException: Попытка вызвать виртуальный метод void android.widget.Button.setOnClickListener (android.view.View $ OnClickListener) 'для ссылки на нулевой объект в com.example.android.virtualshelter.register.onCreate (register.java:35) в android.app.Activity.performCreate (Activity.java:6754) в android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1119) в android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2679) в android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2787) в android.app.ActivityThread.-wrap12 (ActivityThread.java) в android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1504) в android.os.Handler.dispatchMessage (Handler.java:102) в android.os.Looper.loop (Looper.java:154) в android.app.ActivityThread.main (ActivityThread.java:6247) в java.lang.reflect.Method.invoke (роднойMethod) в com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:872) в 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);
        }
    });
}
}

Мой код register.java

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);
}
 }

Я ожидаю перейти к активности register.java, но приложение падает

1 Ответ

0 голосов
/ 03 января 2019

Я догадываюсь, вы не можете найти кнопку, вызывающую NPE при настройке списка. Возможно, у вас нет кнопки, определенной в R.layout.activity_main, но в другом макете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...