「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) {
// クリック時の処理
}
}
}
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) {
// クリック時の処理
}
}
}