我对firebase finish()的新手不要杀死我的注册活动,但它会继续在后台运行。并不断将数据放到数据库中。 我不知道该怎么做。
Signup.java代码段
final Button signup = (Button) findViewById(R.id.signup);
final EditText name, phno, password;
name = (EditText) findViewById(R.id.sign_up_name);
phno = (EditText) findViewById(R.id.sign_up_phno);
password = (EditText)findViewById(R.id.sign_up_pass);
final FirebaseDatabase database = FirebaseDatabase.getInstance();
final DatabaseReference table_user = database.getReference("User");
signup.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
final ProgressDialog mdialog= new ProgressDialog(Signup.this);
mdialog.setMessage("Please wait");
mdialog.show();
table_user.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot)
{
if(dataSnapshot.child(phno.getText().toString()).exists())
{
mdialog.dismiss();
Toast.makeText(Signup.this,"Phone No. Already Registered",Toast.LENGTH_SHORT).show();
}
else
{
mdialog.dismiss();
User user = new User(name.getText().toString(), password.getText().toString());
table_user.child(phno.getText().toString()).setValue(user);
Toast.makeText(Signup.this, "Sign Up Successful", Toast.LENGTH_SHORT).show();
finish();
//重定向到mainActivity.java但数据不受干扰继续代码完全用完全关闭的paranthesis编写
User.java
public class User {
private String Name;
private String Password;
public User(String y,String x) {
Name=y;
Password=x;
}
public String getName() {
return Name;
}
public void setName(String name) {
Name = name;
}
public String getPassword() {
return Password;
}
public void setPassword(String password) {
Password = password;
}
}
activity_signup.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Name"
android:id="@+id/sign_up_name"/>
<EditText
android:id="@+id/sign_up_phno"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/sign_up_name"
android:hint="Phone No."/>
<EditText
android:id="@+id/sign_up_pass"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/sign_up_phno"
android:hint="password"/>
<Button
android:layout_below="@id/sign_up_pass"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/signup"
android:text="Sign up"/>
</RelativeLayout>
有没有办法解决这个问题。完成()
答案 0 :(得分:0)
如果你想回到MainActivity,那么你需要这样做而不是finish():
Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
finish();
因为你无法直接完成Android中的活动,所以你必须先告诉它,然后再将它从哪里开始。
答案 1 :(得分:0)
即使在finish()之后,您的活动仍将保留在内存中,因为需要明确删除Firebase事件侦听器。
您正在添加
table_user.addValueEventListener(<your_listener>);
在finish()
之前,你应该
table_user.removeEventListener(<your_listener>);
清除对活动的引用。您可能必须创建一个私有EventListener(不确定确切的类名)对象,以便以后在删除时可以引用它。