简体   繁体   English

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

[英]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... 我试图在_btnreg listener放入Toast消息,并且有效...

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 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) 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$ 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) MethodAndArgsCaller.run(ZygoteInit.java:872) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:762) 在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);
        }
    });
}
}

My register.java code 我的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);
}
 }

I expect to go to activity register.java, but the app is crashing 我希望去活动register.java,但是应用程序崩溃了

My hunch is, you are not able find the button, causing a NPE when setting the listner. 我的直觉是,您无法找到该按钮,导致在设置列表器时出现NPE。 Could be that you don't have the button defined in R.layout.activity_main , but in a different layout. 可能是因为您没有在R.layout.activity_main定义按钮,而是使用了不同的布局。

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

相关问题 如何将两个不同的文本意图从一个活动发送到另一个活动到同一个 textview? - How can I send two different text intents to the same textview from one activity to another? 如何让6个按钮在Android中使用不同的参数调用相同的方法? - How can I let 6 buttons call the same method with different parameters in Android? 如何在android中的数组中添加按钮 - how can I add buttons in array in android 如何使android中的不同活动正确通信并发送意图? - How to make different activities in android communicate properly and send intents? 如何在JFrame的不同类中保留用于不同按钮的处理程序? - How can I keep handlers for different buttons in different classes in JFrame? 我可以在Android中没有意图的情况下在活动之间移动对象吗? - Can I move objects between activities without intents in Android? 如何在面板底部对齐具有不同尺寸的按钮? - How can i align buttons with different sizes at bottom of panel? 拍照后如何验证不同的按钮? - How can I validate different buttons after taking a picture? 如何向按钮 recyclerview 添加不同的 id - How can I add different ids to buttons recyclerview 我如何知道打开系统活动所需的意图 - How can I know the intents needed to open system activities
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM