我写了一个代码来检查用户名和密码是否为管理员...
如果是,则重定向到管理 Activity (Activity_2),否则将用户重定向到另一个 Activity (ac)...
但是我的代码有问题,因为切换按钮的状态没有按照我的意愿改变:\



这是我的主要 Activity 代码:

package com.example.task_7;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.ToggleButton;

public class MainActivity extends Activity  {


    Button b1;
    ToggleButton b2;
    EditText t1,t2;



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

        b1=(Button) findViewById(R.id.login);
        b2=(ToggleButton) findViewById(R.id.isAdmin);
        t1=(EditText) findViewById(R.id.userName);
        t2=(EditText) findViewById(R.id.password);


        b2.setChecked(false);
        b2.setEnabled(false);

                if(t1.getText().toString().equals("e") && t2.getText().toString().equals("123") ){

                    b2.setEnabled(true);
                    b2.setText("ON");

                }



    b1.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub


            Intent i;

    if(b2.isChecked()) {

                 i = new Intent(getApplicationContext(), Activity_2.class);
                 i.putExtra("UserName", t1.getText().toString());
                 i.putExtra("Password", t2.getText().toString());

                startActivity(i);

            }

            else {

                i  = new Intent(getApplicationContext(), ac.class);
                i.putExtra("UserName", t1.getText().toString());


                startActivity(i);

            }

        }
    });


  }



}

最佳答案

编辑 您需要在 setChecked(true) 中添加 afterTextChanged ,否则您的代码将永远无法运行,因为 b2.isChecked() 始终是 false

这是您的问题: onCreate 函数仅在创建 Activity 时调用。

创建 Activity 时,所有文本都是空的,因此检查 TextViews 是否填充了管理员用户名和密码没有任何意义。每次用户按下一个键时,您都必须检查它们。您可以通过向 TextViews 添加 addTextChangedListener() 来实现这一点,因此每次文本更改时都会调用监听器内的函数:

b1=(Button) findViewById(R.id.login);
b2=(ToggleButton) findViewById(R.id.isAdmin);
t1=(EditText) findViewById(R.id.userName);
t2=(EditText) findViewById(R.id.password);

TextWatcher listener = new TextWatcher() {
    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
    }
    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    }

    @Override
    public void afterTextChanged(Editable s) {
        if(t1.getText().toString().equals("e") && t2.getText().toString().equals("123")){
            b2.setChecked(true);
            b2.setEnabled(true);
            b2.setText("ON");
        }
    }
};

t1.addTextChangedListener(listener);
t2.addTextChangedListener(listener);

10-08 03:03
查看更多