【Android】トグルスイッチ(Switch)を複数配置と識別について

EngineeringAndroid, 備忘録

【Android】トグルスイッチ(Switch)を複数配置と識別について

1個の Switch の配置なら記事はたくさんある。

2個以上の Switch の配置はどうやるのだろう?

うまくいった方法を記しておく。

 

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback, LocationListener, CompoundButton.OnCheckedChangeListener {
Switch switch1;
Switch switch2;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);

SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map_goo_fra);

// トグルスイッチのインスタンス生成
switch1 = (Switch) findViewById(R.id.switch1);
switch2 = (Switch) findViewById(R.id.switch2);
switch1.setOnCheckedChangeListener(this);
switch2.setOnCheckedChangeListener(this);

}

まずインスタンスを作り、

@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
if (buttonView.getId() == switch1.getId()) {
Toast.makeText(MapsActivity.this, "switch1_on", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(MapsActivity.this, "swtch2_on", Toast.LENGTH_SHORT).show();
}
} else {
if (buttonView.getId() == switch1.getId()) {
Toast.makeText(MapsActivity.this, "switch1_off", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(MapsActivity.this, "swtch2_off", Toast.LENGTH_SHORT).show();
}
}
}

switch1 が on された場合と off された場合にトーストを表示する。

switch2 が on された場合と off された場合にトーストを表示する。

上記の動作は互いに独立であるから、4つの場合分けに対応できる。

仮に Switch が3つになった場合、

@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
if (buttonView.getId() == switch1.getId()) {
Toast.makeText(MapsActivity.this, "switch1_on", Toast.LENGTH_SHORT).show();
} else if (buttonView.getId() == switch2.getId) {
Toast.makeText(MapsActivity.this, "swtch2_on", Toast.LENGTH_SHORT).show();
} else if (buttonView.getId() == switch3.getId) {
Toast.makeText(MapsActivity.this, "swtch3_on", Toast.LENGTH_SHORT).show();
}
} else {
if (buttonView.getId() == switch1.getId()) {
Toast.makeText(MapsActivity.this, "switch1_off", Toast.LENGTH_SHORT).show();
} else if (buttonView.getId() == switch2.getId) {
Toast.makeText(MapsActivity.this, "swtch2_off", Toast.LENGTH_SHORT).show();
} else if (buttonView.getId() == switch3.getId) {
Toast.makeText(MapsActivity.this, "swtch3_off", Toast.LENGTH_SHORT).show();
}
}
}

等となるけど、3番目の分岐を省略しないで書いてみた。

 

isChecked に連結して描く方法がわからなかったため、このようになった。

 

 


ところで、WordPress→更新したら編集画面のレイアウトがごっそり変わっている。ほんといいかげんにしろ、だよ。タグは候補が出てこないし、スラッグも候補が出てこないし、コードの表示も変だ。。

hタグの入力も、何処へやら。だたでさえWindowsとOneDriveのファイル破損に嫌気がさすのに、なんでこれ系の開発ってデリカシーがないのかね? 

ほんと馬鹿だよ。罰ゲームでぶん殴りたい。 → [プラグイン] → [新規追加] → 「Classic Editor」 → [有効] で元どおり。

 


 

EngineeringAndroid, 備忘録

Posted by Qawai