2

Android で OnClickListener インターフェイスを実装する最良の方法はどれですか。

/*- 初め - */

public class EmployeeActivity extends Activity implements OnClickListener
{

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

    Button btnUpdate = (Button)findViewById(R.id.btnUpdate);
        Button btnEdit = (Button)findViewById(R.id.btnEdit);

        btnUpdate.setOnClickListener(this);
        btnEdit.setOnClickListener(this);

    @Override
    public void onClick(View v) {

        if (v == btnAddEmployee) 
      {}
    if (v == btnUpdate) 
    {}
}

/ - 秒 - /

public class EmployeeActivity extends Activity {

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Button btnUpdate = (Button)findViewById(R.id.btnUpdate);
        Button btnEdit = (Button)findViewById(R.id.btnEdit);

        btnUpdate.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

            }
        });

        btnEdit.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

            }
        });
    }
}
4

5 に答える 5

2

AndroidでOnClickListenerインターフェースを実装する最良の方法はどれですか

これは、開発者としてのあなたに最適なものにのみ依存します. それらはすべて同じように機能しonClick、xml で宣言する別のオプションもあります。Button機能を共有したい複数の がある場合は特に、最初の方法が気に入っています。しかし、最初に行うより良い方法は、クリックされていることですswitch。何かのようなものidView

@Override
public void onClick(View v) {
    int id = v.getId();
    switch (id)
    {
        case R.id.btnUpdate:
           // do work
           break;
        case R.id.btnEdit
           // do work for edit button
           break;
    }
    // put shared functionality code like starting an Activity, calling a method, etc...
}

2 つ目は、 が 1 つまたは 2 つしかなく、Button機能がまったく異なる場合に使用します。が多すぎると、この方法ではコードが雑然として乱雑に見えると思いますButton。ただし、これらはすべて同じように機能し、アプリのパフォーマンスは変わりません。

于 2013-10-25T14:37:50.627 に答える
0

最初の例は正しくありません。そのようなオブジェクトを比較するべきではありません。次のようなことをする必要があります:

switch(v.getId()) {
    case R.id.yourButton:
        ...
}

2 番目が各リスナーに新しいオブジェクトを割り当てることを除いて、これらはほとんどの部分で同じです。1 つの画面に多数のボタンがある場合は、最初の例のように整理して、ボイラープレート コードを追加しないようにします。

于 2013-10-25T14:40:40.577 に答える
0

どちらかが「優れている」わけではありません。どちらを使用するかは個人的な選択であり、どちらがコーディング スタイルに適合するかによって異なります。

OnClickListener2 番目の方法の利点は、ビューごとに一意にできることです。最初のオプションの利点は、すべてのonClick()コードが 1 か所にあることです。

于 2013-10-25T14:37:56.790 に答える
0

最初の方法は良いです。しかし、if-else ではなく。スイッチケースを使用。

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

    Button btnUpdate = (Button)findViewById(R.id.btnUpdate);
        Button btnEdit = (Button)findViewById(R.id.btnEdit);

        btnUpdate.setOnClickListener(this);
        btnEdit.setOnClickListener(this);

    @Override
    public void onClick(View v) {

       switch(v.getId())
      {
      case R.id.btnUpdate:
        //your work
       break
}
于 2013-10-25T14:40:03.643 に答える