4

ユーザー名とパスワードが管理者用かどうかを確認するコードを書きました...はいの場合は管理者アクティビティ(Activity_2)にリダイレクトし、そうでない場合はユーザーを別のアクティビティ(ac)にリダイレクトします...しかし、私のコードには何か問題があります。トグル ボタンの状態が思い通りに変化しませんでした :\

ここに画像の説明を入力

これはメインアクティビティの私のコードです:

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);

            }

        }
    });


  }



}
4

3 に答える 3

2

このチェックをonCreate()メソッドに入れ、最初に 1 回だけ実行されるようにします。あなたのために作成する必要がありTextWatcherますEditTexts

TextWatcher tw = 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(final Editable s)
    {
        if(t1.getText().toString().equals("e") && t2.getText().toString().equals("123") ){
             b2.setEnabled(true);
             b2.setText("ON");
        } 
    }
});

t1.addTextChangedListener(tw);
t2.addTextChangedListener(tw);

このようにして、誰かがそれらのいずれかのテキストを変更するたびEditTextに、条件がチェックされます。

もちろん、承認ボタンを作成し、クリックすると条件がチェックされるようにするなど、より効率的な方法を考えることもできます。しかし、それはあなた次第です。

于 2013-06-26T09:11:37.660 に答える