「Android開発」 ボタンをクリックした時の実装方法

4種類の方法がある。

1.android.view.View.OnClickListenerインターフェースをインプリメントして、クラス内で「onClick」メソッドを定義する方法。

(main.xml)
・・・
<Button
     android:text="Button1"
     android:id="@+id/button1"
     android:layout_width="100dp"
     android:layout_height="wrap_content"
     android:layout_width="match_parent"
/>
<Button
     android:text="Button2"
     android:id="@+id/button2"
     android:layout_width="100dp"
     android:layout_height="wrap_content"
     android:layout_width="match_parent"
/>
・・・

(mainActivity.java)
import android.view.View;

public class mainActivity extends Activity implements View.OnClickListener{
    @Override protected void onCreate(Bundle icicle) {
        super.onCreate(icicle);

        Button button1  = (Button) findViewById(R.id.button1);
        button1.setOnClickListener(this);

        Button button2  = (Button) findViewById(R.id.button2);
        button2.setOnClickListener(this);

    }

    public void onClick(View v) {
        switch(v.getId()) {
         case R.id.button1:
                    //ボタン1の処理
      break;
         case R.id.button2:
                    //ボタン2の処理
      break;
        }
    }
}

2.Layoutファイルにメソッド指定
(main.xml)
・・・
<Button
     android:text="Button"
     android:id="@+id/button"
     android:layout_width="100dp"
     android:layout_height="wrap_content"
     android:layout_width="match_parent"
     android:onClick="showToast"
/>
・・・

(mainActivity.java)

public class mainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
 
    public void showMsg(View view) {
     // クリック時の処理

    }
}

3.無名クラス
public class mainActivity extends Activity {
    private Button button;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
     
        button = (Button)findViewById(R.id.button);
        button.setOnClickListener(new OnClickListener() {
          public void onClick(View v) {
                // クリック時の処理
           }      
        });
    }
}

4.有名クラス:2種類の書き方

public class mainActivity extends Activity {
    private Button button;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
     
        button = (Button)findViewById(R.id.button);
        button.setOnClickListener(new onClickButton(this));
    }  
}

class onClickButton implements OnClickListener {
    private Context _context;

    public onClickButton(Context context) {
        _context = context;
    }

    @Override
    public void onClick(View v) {
        // クリック時の処理
    }
}

②個人的にはこの書き方は好きです
public class mainActivity extends Activity {
    private Button button;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
     
        button = (Button)findViewById(R.id.button);
        button.setOnClickListener(Buttonclicked);
    }

  private View.OnClickListener Buttonclicked = new View.OnClickListener() {


    public void onClick(View v) {
          // クリック時の処理
      }
  }

}

このブログの人気の投稿

ABAP:データファイルのアップロードとダウンロード

ABAPSE12 更新ビュー作成手順

ABAP:]バックグラウンドジョブDEBUG