0

我找到了以下解决方案来检测我的哪个按钮被按下:

public void onClick(View v) {
    switch(v.getId())
    {
    case R.id.bteins:
    Toast t = Toast.makeText(this, "bzeins", Toast.LENGTH_SHORT);
    t.show();
    break;
    case R.id.btzwei:
    // handle button B click;
    break;
    case R.id.btdrei:
        Toast t1 = Toast.makeText(this, "btdfrei", Toast.LENGTH_SHORT);
        t1.show();
    break;
    case R.id.btvier:
    // handle button B click;
    break;
    default:
    throw new RuntimeException("Unknow button ID");
    }
    }

我的问题是,当我按下bteinsbtdrei没有任何反应时。我的错误是什么?

4

4 回答 4

1

您可以onClick像这样为每个按钮实现:

    findViewById(R.id.bteins).setOnClickListener(new OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            //do some things!
        }
    });
    findViewById(R.id.btzwei).setOnClickListener(new OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            //do some things!
        }
    });
....

OnClickListener在活动中实现并将所有按钮设置为单击:

public class Test extends Activity implements OnClickListener
{
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.test);

        findViewById(R.id.bteins).setOnClickListener(this);
        findViewById(R.id.btzwei).setOnClickListener(this);
        findViewById(R.id.btdrei).setOnClickListener(this);
        findViewById(R.id.btvier).setOnClickListener(this);
    }

    @Override
    public void onClick(View v)
    {
        switch(v.getId())
            {
            case R.id.bteins:
                Toast t = Toast.makeText(this, "bzeins", Toast.LENGTH_SHORT);
                t.show();
                break;
            case R.id.btzwei:
                // handle button B click;
                break;
            case R.id.btdrei:
                    Toast t1 = Toast.makeText(this, "btdfrei", Toast.LENGTH_SHORT);
                    t1.show();
                break;
            case R.id.btvier:
                // handle button B click;
                break;
            default:
                throw new RuntimeException("Unknow button ID");
            }
    }
}
于 2013-07-07T12:42:20.553 回答
0

你设置OnClickListener按钮了吗?我猜你没有。

于 2013-07-07T12:38:50.157 回答
0
public class theexample extends Activity implements OnClickListener

//OnCreateEvent
bteins.setOnClickListener(this);
btvier.setOnClickListener(this);

public void OnClick(View v){
switch(v.getId()){
            case R.id.bteins:
                Toast.makeText(this, "bzeins", Toast.LENGTH_SHORT).show();
                t.show();
                break;
            case R.id.btzwei:
                // handle button B click;
                break;
            case R.id.btdrei:
                   Toast.makeText(this, "btdfrei", Toast.LENGTH_SHORT).show();
                break;
            case R.id.btvier:
                // handle button B click;
                break;
            default:
                throw new RuntimeException("Unknow button ID");
            }
    }
于 2013-07-07T12:48:40.033 回答
0

您需要将触发器连接到它们各自的处理程序setOnClickListener()

此方法要么this作为参数获取,而您的活动必须实现 OnClickListener(Eclipse 可以帮助您轻松地自动重构这些东西。)

或者,只需在现场将一个新的 OnClickListener 传递给它:

Button myButton = (Button) findViewById(*buttons id*);
myButton.setOnClickListener(new OnClickListener()
{
    @Override
    public void onClick(View v)
    {
        //You can check v attributes to see what was clicked as well. 
    }
});
于 2013-07-07T12:49:21.973 回答