Androidアプリを作成したい人必見!!Androidアプリの基本動作はもちろんのこと、本には載っていない、調べても見つからない、ソースを修正するだけでは解決できない、アプリ開発者が直面する問題の解決方法についても記載していきます。 *基本的にはレイアウトファイル(xml)を使わないソースを載せております。
2013年1月10日木曜日
選択型ダイアログ(setSingleChoiceItems)
ダイアログの作成の応用といいますか、
他のタイプのダイアログとの併用の仕方に
ついて、紹介いたします。
とりあえず、サンプルのソースはこちら
package com.example.dialog;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.Toast;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
public class MainActivity extends Activity implements OnClickListener{
//選択結果を保存する
private int result_item = 0;
//選択欄の配列
private String[] aItems = {"りんご","バナナ","マンゴー"};
//レイアウトの定数を変数に格納
private final static int WC=LinearLayout.LayoutParams.WRAP_CONTENT;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//レイアウトの生成
LinearLayout layout=new LinearLayout(this);
//上から下にオブジェクトを配置するよう設定
layout.setOrientation(LinearLayout.VERTICAL);
//画面表示の設定
setContentView(layout);
//ボタンを作成します(押下すると普通のダイアログ出現)
//ボタンを画面に追加する
layout.addView(makeButton("普通のダイアログ", 0));
layout.addView(makeButton("選択型のダイアログ", 1));
}
//ボタンを作成します
private Button makeButton(String sText,int id) {
Button button=new Button(this);
//ボタンの表示テキストの設定
button.setText(sText);
//ボタンのIDの割り振り
button.setId(id);
//クリックリスナーの実装
button.setOnClickListener(this);
//ボタンの表示方法の設定
button.setLayoutParams(new LinearLayout.LayoutParams(WC,WC));
return button;
}
//クリック時に呼ばれるよ
public void onClick(View view) {
//押下されたダイアログのIDを取得
showDialog(view.getId());
}
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case 0:
return CreateDialog("タイトル", "メッセージ", id);
case 1:
return CreateDialog("選択型", null, id);
default:
return null;
}
}
private Dialog CreateDialog(String titleId, String messageId, int id) {
//アラートダイアログを生成
AlertDialog.Builder dialog = new AlertDialog.Builder(this);
//ダイアログにタイトルを設定
dialog.setTitle(titleId);
//nullの時は本文を表示しない対応
if (messageId != null)dialog.setMessage(messageId);
dialog.setIcon(R.drawable.icon);
switch (id) {
case 0:
// dialogOKボタン
dialog.setPositiveButton("OK",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
removeDialog(0);
}
});
// dialogキャンセルボタン
dialog.setNegativeButton("キャンセル",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
break;
case 1:
//選択型ダイアログ
dialog.setSingleChoiceItems(aItems, result_item, new DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog, int which) {
result_item = which;
}
});
//OKボタン押下時
dialog.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichid) {
Toast.makeText(getApplicationContext(), aItems[result_item], Toast.LENGTH_LONG).show();
}
});
break;
default:
}
return dialog.create();
}
}
実行結果は
普通のダイアログボタンを押下すると
選択型のダイアログボタンを押下すると
OKボタン押下後は
のようになります。
押下するボタンにあわせて
出現させるダイアログを変更させています。
また、選択型ダイアログとは
複数の項目から、1つのアイテムをチェックする
ダイアログの事です。
何か、もっとわかりやくて、世間に浸透している名称
とか、あるのでしょうか??
チェックボックス型でもないし。。。
何かご存じの方はお手数ですがご連絡ください。
本題にもどすと、
showDialogの作成方法は前回の通りで、
違いは、
if (messageId != null)dialog.setMessage(messageId);
です。
ダイアログの本文に表示するテキストがない場合には、
本文に表示しないようにしております。
選択型のダイアログは本文があると、うまく表示できないので、
このような措置を取っております。
dialog.setSingleChoiceItems(aItems, result_item,new DialogInterface.OnClickListener(){
第1引数が表示するアイテムリストで、
第2引数が初期に選択されるアイテムです。
最後に選択したアイテムを初期表示にすることにより、
ユーザーが以前何を選択していたのかをわかるようにしています。
以上です。
簡単に作れるダイアログ特集でした。
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿