コメント |
@HTML
<img src="https://lh3.googleusercontent.com/-HRh8UFpUIQw/Vg-UHBX-WOI/AAAAAAAAb40/HQh5sSiEvQM/s400-Ic42/_img.png" style="border: solid 1px #000000">
@HEND
@SHOW
カスタムダイアログで View をセットする場合は、View が含まれたダイアログのインスタンスを使って再度表示します。
[[1回目]]
ad = adb.create();
ad.show();
[[2回目]]
ad.show();
[[この場合、次の表示では、内部の状態は保持されています。ここでは EditText を使用しており、内容を取得した後はクリアしています。]]
adb 側で show するには、毎回新しい View を作成して setView する必要があります。
※ View の内容は毎回初期化されます
@END
@DIV
package sample.lightbox.dialogproject;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
public class MainActivity extends Activity {
// ダイアログ作成用
private AlertDialog.Builder adb = null;
// ダイアログのインスタンス
private AlertDialog ad = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// ダイアログ作成用のインスタンス
adb = new AlertDialog.Builder(MainActivity.this );
// final で view をメモリに固定する
final View view = MainActivity.this.getLayoutInflater().inflate(R.layout.content_main, null);
// ダイアログのオプション
adb
.setTitle("カスタム ダイアログ")
.setView(view)
.setPositiveButton("YES", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// 登録された画面より取得する
EditText et = (EditText) view.findViewById(R.id.textInDialog);
// 入力値の処理
Log.i("lightbox", "PositiveButton");
Log.i("lightbox", et.getText().toString());
// 処理が終了したので、テキストエリアをクリアする
// ※ クリアしなければ、次に表示した時に残っています
et.setText("");
}
});
// ダイアログそのものの インスタンス 生成
ad = adb.create();
// ボタンのイベント
MainActivity.this.findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// ダイアログを表示
ad.show();
}
});
}
}
@END |