前から、うすうす気づいていたのですが、
なんと、Androi4以降のライブラリーでは、
showDialogメソッドが非推奨になっておりました。
うわぁー。。
Android5.0から、復活することを少し願いつつ、
Fragmentも徐々に勉強しないといけないかも。。。
という不安を背負いながら、
今回もダイアログ処理についてです。
複数の入力式のテキストボックスをダイアログに
表示させる方法を説明いたします。
ログインIDとパスワードの設定画面などを、
別Activityを作らずに、サクッと処理したいときに
お勧めです。
~エディットテキスト使い方
■生成
EditText editText = new EditText(getApplicationContext());
生成は他のアプリと同じような感じです。
■文字列取得
String sText = editText.getText().toString();
テキストボックスに入力された文字を文字列として、
取得する方法です。
■ボックス内の設定
editText1.setInputType( InputType.TYPE_CLASS_TEXT );
setInputTypeで設定できます。
InputType.TYPE_CLASS_TEXTは
テキストボックス内での改行禁止とする設定です。
■サンプルソース
package com.example.edittext;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.text.InputType;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
public class FullscreenActivity extends Activity implements OnClickListener{
private EditText editText1;
private EditText editText2;
private String sBefLogin;
private String sBefPswd;
private final static int WC=LinearLayout.LayoutParams.WRAP_CONTENT;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//レイアウトの生成
LinearLayout layout=new LinearLayout(this);
//上から下にオブジェクトを配置するよう設定
layout.setOrientation(LinearLayout.VERTICAL);
//画面表示の設定
setContentView(layout);
//ボタンを画面に追加する
layout.addView(makeButton("ダイアログ", 0));
}
@Override
protected Dialog onCreateDialog(int id) {
AlertDialog.Builder dialog = new AlertDialog.Builder(this);
switch (id) {
case 0:
//エディットテキストの生成
editText1 = new EditText(getApplicationContext());
editText2 = new EditText(getApplicationContext());
//外枠とパーツの作成
LinearLayout layout = new LinearLayout(getApplicationContext());
//上から下にパーツを組み込む設定
layout.setOrientation(LinearLayout.VERTICAL);
//外枠にパーツを組み込む
layout.addView(make_TextView("ログイン"), new LinearLayout.LayoutParams( 300, 40));
layout.addView(editText1, new LinearLayout.LayoutParams( 300,70));
layout.addView(make_TextView("パスワード"), new LinearLayout.LayoutParams( 300, 40));
layout.addView(editText2, new LinearLayout.LayoutParams( 300,70));
//レイアウトをダイアログに設定
dialog.setView(layout);
//タイトルの設定
dialog.setTitle("タイトル");
//エディットボックスの入力タイプの設定
editText1.setInputType( InputType.TYPE_CLASS_TEXT );
editText2.setInputType( InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
//過去の入力内容が表示されるようにする
editText1.setText(sBefLogin);
editText2.setText(sBefPswd);
// dialogOKボタン
dialog.setPositiveButton("OK",new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
sBefLogin= editText1.getText().toString();
sBefPswd = editText2.getText().toString();
Toast.makeText(getApplicationContext(), editText1.getText().toString(), Toast.LENGTH_SHORT).show();
// ダイアログを消す
removeDialog(0);
}
});
// dialogキャンセルボタン
dialog.setNegativeButton("キャンセル",new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
break;
}
return dialog.create();
}
//ボタンを作成します
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;
}
private TextView make_TextView(String sMessage){
//テキストビューの生成
TextView tv = new TextView(getApplicationContext());
//メッセージの設定
tv.setText(sMessage);
return tv;
}
@Override
public void onClick(View arg0) {
//ダイアログの出現
showDialog(0);
}
}
■実行結果
1.初期表示
2,ボタン押下後
パスワードの表示を見ると
●●になっていますね。
なんか、パスワードっぽい感じで。
//外枠とパーツの作成
LinearLayout layout = new LinearLayout(getApplicationContext());
EditTextにこのレイアウト(layout)を設定するイメージです
Activityをわざわざ生成しなくてもいい、
ダイアログは本当に便利ですね。
ついでにですが、removeDialogをすることで、
Dialogふだけでなく、editTextも初期化されます。
0 件のコメント:
コメントを投稿