单击按钮后删除onClickListener

时间:2013-06-05 20:41:51

标签: android android-intent onclicklistener

我想创建一些东西,如果我在TextField中键入例如“abc”,它将打开一个活动。如果我输入别的东西,我不希望它打开活动。 我已经做了一些东西,它第一次工作(如果你没有输入有效的输入,它会出错,如果输入“abc”,它会打开一个页面。我希望这个系统有多个选项我使用“abc”和“bbb” “。它第一次工作,但如果我回去输入别的东西,它会打开与第一次尝试相同的页面。 也许我必须禁用OnClickListener,但是如何?

这是我的MainActivity.java

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

   final Button button = (Button) findViewById(R.id.button1);
   final EditText textedit = (EditText) findViewById(R.id.editText1);

    button.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {

            if ("abc".equals(textedit.getText().toString())) 
                button.setOnClickListener(new View.OnClickListener() {

                    @Override
                    public void onClick(View v) {
                        // TODO Auto-generated method stub
                        Intent intent = new Intent (MainActivity.this, Schoen1.class);
                        startActivity(intent);


                    }
                });                
            if ("bbb".equals(textedit.getText().toString()))
                button.setOnClickListener(new View.OnClickListener() {

                    @Override
                    public void onClick(View v) {
                        // TODO Auto-generated method stub
                        Intent i = new Intent (MainActivity.this, Schoen2.class);
                        startActivity(i);

                    }
                });
            else 
                button.setText("wrong pass");

        }
    });
}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

}

“Schoen1”和“Schoen2”是我打开的页面。 谢谢!

2 个答案:

答案 0 :(得分:0)

问题是onClickListener()已经设置好了。您需要做的是将代码移到onClick()

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                 if ("abc".equals(textedit.getText().toString())) 
                 {
                      Intent intent = new Intent (MainActivity.this, Schoen1.class);
                      startActivity(intent);
                 }
                 else  if ("bbb".equals(textedit.getText().toString()))
                 {
                       Intent i = new Intent (MainActivity.this, Schoen2.class);
                       startActivity(i);
                 }

答案 1 :(得分:0)

对于初学者,您在onClickListener内有两个onClickListener。摆脱内部集合并尝试添加标记,以便在Intent运行后,下次不会再次运行。您需要在某个时刻重置标志,以便Intents不仅会打开一次。

boolean flag1 = true;
boolean flag2 = true;

button.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {

        if ("abc".equals(textedit.getText().toString()) && flag1) {
            flag1 = false;
            Intent intent = new Intent (MainActivity.this, Schoen1.class);
            startActivity(intent);

        }  else if ("bbb".equals(textedit.getText().toString()) && flag2) {
            flag2 = false;
            Intent i = new Intent (MainActivity.this, Schoen2.class);
            startActivity(i);

        } else {
            button.setText("wrong pass");
        }

    }
});

代码未经测试。