0

たとえば、ボタン1とボタン2を押すと、Androidで複数のボタンを使用して単一のアクションが得られます。これを解決するための最良の方法は何ですか

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.braill);
    Button btn1 = (Button) findViewById(R.id.btn1);
    Button btn2 = (Button) findViewById(R.id.btn2);
    Button btn3 = (Button) findViewById(R.id.btn3);
    Button btn4 = (Button) findViewById(R.id.btn4);
    Button btn5 = (Button) findViewById(R.id.btn5);
    Button btn6 = (Button) findViewById(R.id.btn6);
    Button complete = (Button) findViewById(R.id.complete);
    btn1.setOnClickListener(this);
    btn2.setOnClickListener(this);
    btn3.setOnClickListener(this);
    btn4.setOnClickListener(this);
    btn5.setOnClickListener(this);
    btn6.setOnClickListener(this);
    complete.setOnClickListener(this);



}

@Override
public void onClick(View v) {
    final EditText edittext = (EditText) findViewById(R.id.edtext);
    switch(v.getId()){
    case R.id.btn1 & R.id.btn2 & R.id.complete:
    {
        Toast toast = Toast.makeText(getApplicationContext(), "Button 1", Toast.LENGTH_SHORT);
        toast.setGravity(Gravity.CENTER,0, 0);
        toast.show();
        edittext.append("a");
        break;  
    }


}

}}

4

4 に答える 4

1

スイッチを有効な if 条件に変えます

if ( (v.getId()==R.id.btn1) || (v.getId()==R.id.btn2) || (v.getId()==R.id.complete))
{
    Toast toast = Toast.makeText(getApplicationContext(), "Button 1", Toast.LENGTH_SHORT);
    toast.setGravity(Gravity.CENTER,0, 0);
    toast.show();
    edittext.append("a");
    break;  
}
于 2013-11-12T08:05:31.310 に答える
1

すべてのボタンを case ステートメントに配置します。ブレークを追加しないでください。最後の case ステートメントにロジックを追加して、ブレークステートメントを配置します。

    @Override
    public void onClick(View v) {
        final EditText edittext = (EditText) findViewById(R.id.edtext);
        switch(v.getId()){
        case R.id.btn1: 
                 //no break; continue executing next.
        case R.id.btn2: 
              //no break; continue executing next.
        case R.id.complete:
            Toast toast = Toast.makeText(getApplicationContext(), "Button 1", Toast.LENGTH_SHORT);
            toast.setGravity(Gravity.CENTER,0, 0);
            toast.show();
            edittext.append("a");
//break here.
            break;  
    ...
        }

}

于 2013-11-12T08:07:16.833 に答える
0

これを試して

button3333.setOnClickListener(getOnClickDoSomething(button3333)); button2222.setOnClickListener(getOnClickDoSomething(button2222));

getOnClickDoSomething( )の実装

View.OnClickListener getOnClickDoSomething(final Button button)  {
return new View.OnClickListener() {
    public void onClick(View v) {
        button.setText("text now set.. ");    
    }
};

}

于 2013-11-12T08:22:09.233 に答える
0

関連するボタンのリスナーとして設定できる OnClickListener の匿名インスタンスを紹介します。これにより、動作がうまくカプセル化され、ボタン ID を相互参照する必要がなくなります。

private OnClickListener mDoWhatever = new OnClickListener() {
    @Override
    public void onClick(View v) {
        final EditText edittext = (EditText) findViewById(R.id.edtext);
        Toast toast = Toast.makeText(getApplicationContext(), "Button 1", Toast.LENGTH_SHORT);
        toast.setGravity(Gravity.CENTER,0, 0);
        toast.show();
        edittext.append("a");
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.braill);
    Button btn1 = (Button) findViewById(R.id.btn1);
    Button btn2 = (Button) findViewById(R.id.btn2);
    Button btn3 = (Button) findViewById(R.id.btn3);
    Button btn4 = (Button) findViewById(R.id.btn4);
    Button btn5 = (Button) findViewById(R.id.btn5);
    Button btn6 = (Button) findViewById(R.id.btn6);
    Button complete = (Button) findViewById(R.id.complete);
    btn1.setOnClickListener(mDoWhatever);
    btn2.setOnClickListener(mDoWhatever);
    btn3.setOnClickListener(this);
    btn4.setOnClickListener(this);
    btn5.setOnClickListener(this);
    btn6.setOnClickListener(this);
    complete.setOnClickListener(mDoWhatever);
  }
于 2013-11-12T08:23:23.660 に答える