两个onClickListeners和它们之间的交互

时间:2013-04-09 18:04:18

标签: java android

假设我有两个onClickListeners,A和B,以及一些分配给它们的按钮。是否有一种方法可以让每个单击的按钮“属于”onClickListener A来监听,等待或等等,直到单击下一个按钮,如果它来自onClickedListener B后再执行一些代码,那么它是不重要的,如果它来自onClickListener A保持不变,只做等待下一次点击,并等待上一个按钮,等等?

1 个答案:

答案 0 :(得分:0)

好的,所以我编辑了我的回答,做了另外一个问题。如果有意义,请告诉我。我不会为你做这项工作,所以这是一个简单的例子,它向你展示了逻辑是什么。

//This is how you set the TAG so you have it. But I know you use getTag, so I am not sure     
//what you are using it for.
a1 = (Button) findViewById(R.id.bA1);
a2 = (Button) findViewById(R.id.bA2);
b1 = (Button) findViewById(R.id.bB1);
b2 = (Button) findViewById(R.id.bB2);
a1.setTag("A");
a2.setTag("A");
b1.setTag("B");
b2.setTag("B");


View.OnClickListener listener = new View.onClickListener() {
    public void onClick(View view) {
        String tag = (String)view.getTag();
        if(tag.equals("A")
            //example on one B button with assumed TAG of "B"
            someButton.setOnClickListener(listener);
            //deregister all your A Views, but again, I'll do one as an example
            //in this case I'll quickly just deregister the A button or view just clicked
            view.setOnClickListener(null);
        else
            if(tag.equals("B")) {
                /*I guess do your thing here but deregister all the B views again
                and register all the A views again*/
                someButton.setOnClickListener(null);
                otherAButton.setOnClickListener(listener);
            }
    }
});

所以我做了一些假设来缩短代码。例如。使用View方法使用"A"标记设置所有A setTag,反之亦然,使用B View。此外,我假设您希望A视图开始收听点击次数,因此当首次启动活动或片段时,您可以通过listenersetOnClickListener设置为A视图。