Android 開発 -- Android ログイン登録ページ (下記) を実現する

以前にログイン登録ページのレイアウトを完了しました。次に、ログインを確認し、パスワードを記憶する機能を実装します。

ここではまだデータベースを使用していないため、検証アカウントのパスワードはハードコーディングされています。

まずログインページに入り、ここから登録ページにジャンプできます. 登録が成功すると、アカウントパスワード入力ボックスは、登録したばかりのアカウントパスワードを自動的に取得するので、再度入力する必要はありません. ログインに成功するとホームページにジャンプし、ホームページは先ほど登録したアカウントを取得して表示し、ホームページのログアウトをクリックしてログインページに戻ります。

    

次に、最初にホームページの activity_main.xml ページのコンテンツを記述します。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/tv_content"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="欢迎!"
        android:textSize="40sp"
        android:layout_marginTop="30dp"
        android:layout_gravity="center_horizontal"></TextView>
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="退出登录"
        android:textSize="25sp"
        android:layout_margin="20dp"
        style="@style/MyBtnStyle"
        android:onClick="loginOut"></Button>
</LinearLayout>

効果は次の図のとおりです。

ホームページの MainActivity.java コードは次のとおりです。

public class MainActivity extends AppCompatActivity {

    private TextView tvContent;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        getSupportActionBar().setTitle("首页");

        tvContent=findViewById(R.id.tv_content);
        Intent intent=getIntent();
        String account=intent.getStringExtra("account");
        tvContent.setText("欢迎你:"+account);
    }

    //退出登录按钮点击事件
    public void loginOut(View view) {
        Intent intent=new Intent(this,LoginActivity.class);
        startActivity(intent);
        this.finish();
    }
}

ここでのコードは、ログインの確認とパスワードの記憶の内容を含む内容です。

最初は LoginActivity.java ページです。

public class LoginActivity extends AppCompatActivity {

    public static final int REQUEST_CODE_REGISTER = 1;
    private static final String TAG="tag";
    private Button btnLogin;
    private EditText etAccount,etPassword;
    private CheckBox cbRemember;
    private String userName="a";
    private String pass="123";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
        getSupportActionBar().setTitle("登录");

        initView();
        initData();


        btnLogin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //判断账号密码是否符合要求
                String account=etAccount.getText().toString();
                String password=etPassword.getText().toString();
                if (TextUtils.isEmpty(userName)){
                    Toast.makeText(LoginActivity.this,"还没有注册账号!",Toast.LENGTH_LONG).show();
                    return;
                }
                if (TextUtils.equals(account,userName)){
                    if (TextUtils.equals(password,pass)){
                        Toast.makeText(LoginActivity.this,"恭喜你,登录成功!",Toast.LENGTH_LONG).show();
                        if (cbRemember.isChecked()){
                            SharedPreferences spf=getSharedPreferences("spfRecorid",MODE_PRIVATE);
                            SharedPreferences.Editor edit=spf.edit();
                            edit.putString("account",account);
                            edit.putString("password",password);
                            edit.putBoolean("isRemember",true);
                            edit.apply();
                        }else {
                            SharedPreferences spf=getSharedPreferences("spfRecorid",MODE_PRIVATE);
                            SharedPreferences.Editor edit=spf.edit();
                            edit.putBoolean("isRemember",false);
                            edit.apply();
                        }

                        //实现跳转
                        Intent intent=new Intent(LoginActivity.this,MainActivity.class);
                        //传递用户名
                        intent.putExtra("account",account);
                        startActivity(intent);
                        //接收自己
                        LoginActivity.this.finish();

                    }else {
                        Toast.makeText(LoginActivity.this,"密码错误!",Toast.LENGTH_LONG).show();
                    }
                }else {
                    Toast.makeText(LoginActivity.this,"用户名错误",Toast.LENGTH_LONG).show();
                }

            }
        });
    }

    //记住密码(取出数据)
    private void initData() {
        SharedPreferences spf=getSharedPreferences("spfRecorid",MODE_PRIVATE);
        boolean isRemember=spf.getBoolean("isRemember",false);
        String account=spf.getString("account","");
        String password=spf.getString("password","");
        //更新用户名密码(注册的用户名密码)
        userName=account;
        pass=password;

        if (isRemember){
            etAccount.setText(account);
            etPassword.setText(password);
            cbRemember.setChecked(true);
        }

    }

    //初始化
    private void initView(){
        btnLogin=findViewById(R.id.btn_login);
        etAccount=findViewById(R.id.et_account);
        etPassword=findViewById(R.id.et_password);
        cbRemember=findViewById(R.id.cb_remember);
    }

    //还没有账号(跳转到注册)
    public void toRegister(View view) {
        Intent intent=new Intent(this,RegisterActivity.class);
        
        //startActivity(intent);
        startActivityForResult(intent,REQUEST_CODE_REGISTER);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode==REQUEST_CODE_REGISTER&&resultCode==RegisterActivity.RESULT_CODE_REGISTER&&data!=null){
            Bundle extras=data.getExtras();
            //获取用户密码
            String account=extras.getString("account","");
            String password=extras.getString("password","");
            etAccount.setText(account);
            etPassword.setText(password);

            //更新用户名密码(注册的用户名密码)
            userName=account;
            pass=password;
        }
    }
}

次は、RegisterActivity.java ページのコンテンツです。

public class RegisterActivity extends AppCompatActivity implements View.OnClickListener {

    public static final int RESULT_CODE_REGISTER = 0;
    private Button btnRegister;
    private EditText etAccount,etPass,etPassConfirm;
    private CheckBox cbAgree;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_register);
        getSupportActionBar().setTitle("注册");

        etAccount=findViewById(R.id.et_account);
        etPass=findViewById(R.id.et_password);
        etPassConfirm=findViewById(R.id.et_password_Confirm);
        cbAgree=findViewById(R.id.cb_agree);
        btnRegister=findViewById(R.id.btn_register);

        btnRegister.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        String name=etAccount.getText().toString();
        String pass=etPass.getText().toString();
        String PassConfirm=etPassConfirm.getText().toString();

        if (TextUtils.isEmpty(name)){
            Toast.makeText(RegisterActivity.this,"用户名不能为空!",Toast.LENGTH_LONG).show();
            return;
        }
        if (TextUtils.isEmpty(pass)){
            Toast.makeText(RegisterActivity.this,"密码不能为空!",Toast.LENGTH_LONG).show();
            return;
        }
        if (!TextUtils.equals(pass,PassConfirm)){
            Toast.makeText(RegisterActivity.this,"密码不一致!",Toast.LENGTH_LONG).show();
            return;
        }
        if (!cbAgree.isChecked()){
            Toast.makeText(RegisterActivity.this,"请同意用户协议!",Toast.LENGTH_LONG).show();
            return;
        }
        //存储注册的用户名和密码
        SharedPreferences spf=getSharedPreferences("spfRecorid",MODE_PRIVATE);
        SharedPreferences.Editor edit = spf.edit();
        edit.putString("account",name);
        edit.putString("password",pass);
        //注册成功后,回到登录页面,数据回传
        Intent intent=new Intent();
        Bundle bundle=new Bundle();
        bundle.putString("account",name);
        bundle.putString("password",pass);
        intent.putExtras(bundle);
        setResult(RESULT_CODE_REGISTER,intent);
        Toast.makeText(RegisterActivity.this,"注册成功!",Toast.LENGTH_LONG).show();
        this.finish();
    }
}

この時点で、ログインの確認とパスワードの記憶の機能は完了です。おめでとう!

上記のコードはすべて自分で1つずつコーディングし、実行しましたが、結果は問題ありません。もちろん、お勧めがあれば教えてください❥(^_-)

具体的なソース コードはコメント欄で共有されており、必要な人は自分で拾うことができます。

おすすめ

転載: blog.csdn.net/Waterme10n/article/details/122644194
おすすめ