开关盒可以做这样的事吗?

时间:2015-08-23 13:38:04

标签: java android switch-statement

我的想法是,我的应用上有按钮,可以导致单个活动。我希望它具有相同的文本模板,但单击不同的按钮时会出现不同的内容。我已经完成了XML文件,我被困在代码上。我正在考虑使用开关盒,但是可以用开关盒吗?还是我太野心了?

编辑:这是我到目前为止的代码:

public class SelectKeys extends Activity {


private static final int[] buttonIDs = {R.id.cKey, R.id.cSharpKey, R.id.dKey, R.id.dSharpKey, R.id.eKey, R.id.fKey, R.id.fSharpKey, R.id.gKey, R.id.gSharpKey, R.id.aKey, R.id.aSharpKey, R.id.bKey};

private Button[] bt = new Button[buttonIDs.length];


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

    for (int i = 0; i < buttonIDs.length; i++) {
        final int b = i;
        bt[b] = (Button) findViewById(buttonIDs[i]); // Fetch the view id from array
        bt[b].setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                //opens up new screen
                Intent intent = new Intent(getApplicationContext(), ChordKeys.class);
                startActivity(intent);

                }
            });


        }
    }

public final void keyButton(final View v)
{
    switch(v.getId())
    {
        case R.id.cKey:
        {
            setContentView(R.layout.activity_key_c);
            break;
        }
        case R.id.cSharpKey:
        {
            setContentView(R.layout.activity_csharp_dflat);
            break;
        }
        // adding more cases later once I get this to work
    }
}
}

2 个答案:

答案 0 :(得分:0)

当然可以使用switch case来完成,你只需要创建一个实现onClickListener的类,并将所有按钮链接到这个监听器,如下所示:

    final Button button= (Button) findViewById(R.id.button1);
    button.setOnClickListener(new MyButtonListener());

    class MyButtonListener implements View.OnClickListener{

        @Override
        public void onClick(View v) {
            int id=v.getId();
            switch (id){
                case R.id.button1:
                    button.setText("Text1");
                    break;
                case **:
                    break;

                default:
                    break;

            }

答案 1 :(得分:0)

要有一个可在xml布局中处理的集中式Click处理程序:

将此方法添加到Java代码

public final void clickHandler(final View v)
{
    switch(v.getId())
    {
        case R.id.btn1:
        {
            // Do something, when you click btn1
            break;
        }
        case R.id.btn2:
        {
            // Do something else, when you click btn2
            break;
        }
        // ... more cases ...
    }
}

在xml布局中:

    ...

    <Button
        android:id="@+id/btn1"
        ...
        android:onClick="clickHandler"
    />

    <Button
        android:id="@+id/btn2"
        ...
        android:onClick="clickHandler"
    />

    ...

注意(1):这对于按钮有效不仅,对ImageButtons,ImageViews,TextViews,...

也是有效的。

注意(2):您可以同时使用混合视图(例如:一个Button,2个TextView和一个ImageView都可以使用相同的clikHandler()方法)。