![](/img/trans.png)
[英]How can I send two different text intents to the same textview from one activity to another?
[英]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.