OnClick in片段而不创建大量的onclicklisteners

时间:2015-07-05 20:45:53

标签: android android-fragments onclick

如何在片段中处理OnClick方法,而不为每个按钮制作大量的onclick侦听器,然后为它们设置一个巨大的switch语句。例如,我的布局中有10个复选框,我希望片段以相同的方式处理它们(具有相同的OnClick)

2 个答案:

答案 0 :(得分:1)

非常简单。如果你想以同样的方式处理它们,就这样做吧;

        View.OnClickListener listener = new View.OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                Toast.makeText(MainActivity.this,"asdasd",Toast.LENGTH_SHORT).show();
            }
        };
        item1.setOnClickListener(listener);
        item2.setOnClickListener(listener);
        item3.setOnClickListener(listener);

答案 1 :(得分:0)

首先,你的问题是暧昧的。你想知道的并不是100%清楚。

如果我理解正确,你不需要10个单独的听众,但只需要1个。

然后你得到:

public class Main2Activity extends AppCompatActivity implements View.OnClickListener{
    private Button button01;
    private Button button02;
    private Button button03;
    private Button button04;

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

        button01 = (Button) findViewById(R.id.button01);
        button02 = (Button) findViewById(R.id.button02);
        button03 = (Button) findViewById(R.id.button03);
        button04 = (Button) findViewById(R.id.button04);

        button01.setOnClickListener(this);
        button02.setOnClickListener(this);
        button03.setOnClickListener(this);
        button04.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        if (view == button01) {
            // button01 clicked
        } else if (view == button02) {
            // button02 clicked
        } else if (view == button03) {
            // button03 clicked
        } else if (view == button04) {
            // button4 clicked
        }
    }
}

这是你在找什么?