【问题标题】:Button isn't starting a new intent按钮没有开始新的意图
【发布时间】:2019-09-21 07:23:14
【问题描述】:

我正在尝试制作一个带有一些文本字段的注册屏幕,供用户输入用户名和密码,按钮应该保存数据并返回登录屏幕。但是当我单击注册按钮时,它不会返回登录屏幕。

我已经评论了我认为错误的位置:

package com.example.gerenciadorestoqueoficial;

import android.content.Intent;
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.TextView;
import android.widget.Toast;

public class Cadastro extends AppCompatActivity {


    EditText cadastroNome;
    EditText cadastroPassword;
    EditText cnfCadastroPassword;
    Button cadastrar;
    Button voltar;
    TextView verLogin;
    DbHelper db;




    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.tela_cadastro);


        cadastroNome = (EditText)findViewById(R.id.etCadastroNome);
        cadastroPassword = (EditText)findViewById(R.id.etCadastroPassword);
        cnfCadastroPassword =(EditText)findViewById(R.id.etConfirmarPassword);
        cadastrar = (Button)findViewById(R.id.btnCadastrar);
        verLogin = (TextView)findViewById(R.id.tvLoginCadastro);
        voltar = (Button)findViewById(R.id.btnVoltarCadastro);
        final DbHelper db = new DbHelper (this);

        verLogin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent loginIntent = new Intent(Cadastro.this,MainActivity.class);
                startActivity(loginIntent);
            }
        });

        voltar.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(Cadastro.this,MainActivity.class);
                finish();
                startActivity(intent);
            }

        });

        // here is the button

        cadastrar.setOnClickListener(new View.OnClickListener() {
            @Override

             public void onClick(View view) {

                String usuario = cadastroNome.getText().toString();
                String password = cadastroPassword.getText().toString();
                String cnfPassword = cnfCadastroPassword.getText().toString();

                if(password.equals(cnfPassword)){
                    long val = db.adicionarUsuario(usuario, password);
                    if(val > 0){
                        Toast.makeText(Cadastro.this, "Usuário cadastrado", Toast.LENGTH_SHORT).show();
                        Intent irParaLogin = new Intent(Cadastro.this, MainActivity.class);   // here is the intent that is not working
                        finish();
                        startActivity(irParaLogin);
                    }else if(cadastroNome.getText().toString().length() == 0 || cadastroPassword.getText().toString().length() == 0 || cnfCadastroPassword.getText().toString().length() == 0){
                        Toast.makeText(Cadastro.this, "Preencha todos os campos", Toast.LENGTH_SHORT).show();
                    }

                    }
            }
        });

        }

    }

在 SQLite 的帮助下保存数据然后返回登录屏幕后应该说“Usuário cadastrado”,除非两个文本字段中的密码不匹配。

【问题讨论】:

  • 在第一个 if 中添加一个 else 括号,然后检查它是否出现。如果是,那么您的密码不匹配。
  • cadastroPassword.getText().toString().trim();尝试像这样定义
  • 我添加了 kunal 建议的 else 括号并且它起作用了,所以我更新了帖子,因为现在唯一的问题是注册按钮 (cadastrar.setOnClickListener) 没有打开登录屏幕

标签: android-studio android-intent android-activity


【解决方案1】:
Better u make your DBHelper Insert method like bool return type

  public boolean InsertData(String name,int cost,int sell,int profit)
{
    SQLiteDatabase db=this.getWritableDatabase();
    ContentValues contentValues=new ContentValues();
    contentValues.put("Name",name);
    contentValues.put("Cost_Price",cost);
    contentValues.put("Selling_Price",sell);
    contentValues.put("Profit",profit);
    long result= db.insert("Table_B",null,contentValues);

    if (result==-1)
        return  false;
    else
        return true;

}

在此之后将您的用户名和密码发送到此方法并在布尔变量中接受它....傻瓜

 boolean isInserted = mdb.InsertData("Cake" "1kilo", 60, 50, 10);

            if (isInserted == true)

              //start your intent here
            else
                Toast.makeText(Register.this, "OOps Data Not Inserted", Toast.LENGTH_LONG).show();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-08
    • 2017-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多