繁体   English   中英

如何在Android中将2个按钮重定向到不同的意图?

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

在此处输入图片说明

我在每个按钮上放置了一个侦听器,使我可以进行不同的活动。 登录按钮可以正常工作,但是当我单击注册按钮时,它会停止应用程序。

我试图在_btnreg listener放入Toast消息,并且有效...

我收到此错误:

E / AndroidRuntime:致命例外:主进程:com.example.android.virtualshelter,PID:24128 java.lang.RuntimeException:无法启动活动ComponentInfo {com.example.android.virtualshelter / com.example.android.virtualshelter.register }:java.lang.NullPointerException:尝试在android.app.ActivityThread.performLaunchActivity(ActivityThread.java :)上的空对象引用上调用虚拟方法'void android.widget.Button.setOnClickListener(android.view.View $ OnClickListener)' 2726)在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2787)在android.app.ActivityThread.-wrap12(ActivityThread.java)在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1504)在android位于android.app.ActivityThread.main(ActivityThread.java:6247)的android.os.Looper.loop(Looper.java:154)的.os.Handler.dispatchMessage(Handler.java:102)在java.lang.reflect处。位于com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:872)的Method.invoke(本机方法) 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.os.Looper.loop(Looper.java:154)处的android.os.Handler.dispatchMessage(Handler.java:102)处的android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1504) com.android.internal.os.ZygoteInit $的java.lang.reflect.Method.invoke(本机方法)的.ActivityThread.main(ActivityThread.java:6247) 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:762)上的MethodAndArgsCaller.run(ZygoteInit.java:872)

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,但是应用程序崩溃了

我的直觉是,您无法找到该按钮,导致在设置列表器时出现NPE。 可能是因为您没有在R.layout.activity_main定义按钮,而是使用了不同的布局。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM