テクパー2020
テクニカルヘルパー


 アンドロイドアプリ開発  

◆ ダイアログの操作
・ ダイアログ、テキストダイアログ、チョイスダイアログ、マルチチョイスダイアログを表示します

1.新規プロジェクトで 「 ToolsDialog 」 を新規に作成します

1)ファイル(F) → 新規(N) → プロジェクト(P)

2)Android の Android プロジェクト を選択し、[次へ(N)]ボタン をクリック
・プロジェクト名に 「 ToolsDialog 」 を入力
・ビルド・ターゲットの □ Android 2.2 を チェック (最新のバージョン)
・アプリケーション名に 「 ToolsDialog 」 を入力
・パッケージ名に 「 任意のドメイン名 」 を入力 (ドメイン名をパッケージ名に利用)
・□ Create Activityがチェック状態で、名称に 「 ToolsDialog 」 を入力
・[完了]ボタン をクリック

(プロジェクトの構成)


2.「 ToolsDialog 」 を書き換え
package com.proto.toolsdialog;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.graphics.Color;
import android.os.Bundle;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.LinearLayout;
import android.view.View;
//import android.view.Window;

public class ToolsDialog extends Activity
                         implements View.OnClickListener,
                                    DialogInterface.OnClickListener {

    private final static int MatchParent=LinearLayout.LayoutParams.MATCH_PARENT;
    private final static int WrapContent=LinearLayout.LayoutParams.WRAP_CONTENT;
    
    //ボタンの生成
    private Button makeButton(String text,String tag,String params) {
        Button button=new Button(this);
        button.setText(text);
        button.setTag(tag);
        button.setOnClickListener(this);
        if (params == "MATCH") {
           button.setLayoutParams(
               new LinearLayout.LayoutParams(MatchParent,WrapContent));
        } else {
           button.setLayoutParams(
               new LinearLayout.LayoutParams(WrapContent,WrapContent));
        }
        return button;
    }

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // setContentView(R.layout.main);  書き換え
        
        // ウィンドウタイトルの非表示
        // requestWindowFeature(Window.FEATURE_NO_TITLE);

        // レイアウトの生成
        LinearLayout layout=new LinearLayout(this);
        layout.setBackgroundColor(Color.WHITE);        // 背景色の指定
        layout.setOrientation(LinearLayout.VERTICAL);  // HORIZONTAL, VERTICAL 
        setContentView(layout);
        
        // テキストの生成
        TextView txtView = new TextView(this);
        txtView.setTextColor(Color.MAGENTA);
        txtView.setTextSize(16f);
        txtView.setText("ダイアログ表示のチェック");
        layout.addView(txtView,
                       new LinearLayout.LayoutParams(MatchParent,WrapContent));
        
        // ボタンの生成
        /* (layout.addView(button,
                      new LinearLayout.LayoutParams(WRAP_CONTENT,WRAP_CONTENT));) */
        layout.addView(makeButton("ダイアログ表示ボタン","0","MATCH"));
        layout.addView(makeButton("テキストダイアログ表示ボタン","1","MATCH"));
        layout.addView(makeButton("チョイスダイアログ表示ボタン","2","MATCH"));
        layout.addView(makeButton("マルチチョイスダイアログ表示ボタン","3","MATCH"));
        
    }

    // ダイアログの表示
    private static void showDialog(final Activity activity,
                                   String title,String text,
                                   DialogInterface.OnClickListener listener) {
        AlertDialog.Builder ad=new AlertDialog.Builder(activity);
        ad.setTitle(title);
        ad.setMessage(text);
        ad.setPositiveButton("OK",listener);  
        ad.create();
        ad.show();
    }

    // テキストダイアログの表示
    public static void showTextDialog(final Activity activity,
                                      String title,String text,String hint,
                                      DialogInterface.OnClickListener listener) {  
        // テキストの編集
        EditText editText=new EditText(activity);  
        editText.setText(text);
        editText.setHint(hint);
        // ダイアログの設定
        AlertDialog.Builder ad=new AlertDialog.Builder(activity);
        ad.setTitle(title);  
        ad.setView(editText);  
        ad.setPositiveButton("OK",listener);  
        ad.create();
        ad.show();  
    }    

    //チョイスダイアログの表示
    public void showChoiceDialog(final Activity activity,
                                 String title,String[] items,int itemIdx,
                                 DialogInterface.OnClickListener listener) {
        AlertDialog.Builder ad=new AlertDialog.Builder(this);  
        ad.setTitle(title);  
        ad.setSingleChoiceItems(items,itemIdx,null);
        ad.setPositiveButton("OK",listener);
        ad.create();
        ad.show();  
    }

    //マルチチョイスダイアログの表示
    public void showMultiChoiceDialog(final Activity activity,
                                      String title,String[] items,boolean[] flags,
                                      DialogInterface.OnClickListener listener) {
        AlertDialog.Builder ad=new AlertDialog.Builder(this);  
        ad.setTitle(title);  
        ad.setMultiChoiceItems(items,flags,null);
        ad.setPositiveButton("OK",listener);
        ad.create();
        ad.show();
    }

    // ボタンクリックの処理
    public void onClick(View view) {

        // タグ情報の取得
        int tag=Integer.parseInt((String)view.getTag());

        // b.setText("ボタン・クリック");
        if (tag==0) {
        showDialog(this,"ダイアログ","メッセージの表示",this);
        }
        else if (tag==1) {
        showTextDialog(this,"テキストダイアログ","","テキストの入力",this);
        }
        else if (tag==2) {
        showChoiceDialog(this,"チョイスダイアログ",
                         new String[]{"選択項目1","選択項目2","選択項目3"},
                         -1,this);
        }
        else if (tag==3) {
        showMultiChoiceDialog(this,"マルチチョイスダイアログ",
                              new String[]{"選択項目A","選択項目B","選択項目C"},
                              new boolean[]{false,false,false},this);
        }
    }

    @Override
    // ダイアログ・ボタンクリックの処理
    public void onClick(DialogInterface arg0, int arg1) {
    }

}


・機能の説明
public class ToolsDialog extends Activity
                         implements View.OnClickListener,
                                    DialogInterface.OnClickListener {

implements View.OnClickListener,DialogInterface.OnClickListener の追加
android.view.View.OnClickListener のOnClickListenerインターフェース

// クリックリスナーの処理(オーバーライド)
public abstract void onClick (View v) 
android.content.DialogInterface.OnClickListener のOnClickListenerインターフェース

// クリックリスナーの処理(オーバーライド)
public abstract void onClick (DialogInterface dialog, int which) 
android.widget.Activity のActivityクラスのコンスタント

RESULT_CANCELED :キャンセル操作
RESULT_OK      :成功操作
android.app.AlertDialog.Builder のAlertDialog.Builderクラスの生成、指定

public AlertDialog.Builder (Context context) 

// タイトルの指定(文字列)
public AlertDialog.Builder setTitle (CharSequence title) 

// メッセージの指定(文字列)
public AlertDialog.Builder setMessage (CharSequence message) 

// ダイアログ・ボタンの指定(表示文字列,クリック処理)
public AlertDialog.Builder setPositiveButton (
                             CharSequence text,
                             DialogInterface.OnClickListener listener) 

// アラート・ダイアログの作成
public AlertDialog create () 

// アラート・ダイアログの表示
public AlertDialog show () 
android.widget.EditText のEditTextクラスの生成

public EditText (Context context) 
android.widget.TextView のTextViewクラスの指定

// テキストの指定(文字列)
public final void setText (CharSequence text) 

// ヒント表示の指定(文字列)※テキストが空文字列のときに表示する文字列
public final void setHint (CharSequence hint) 
android.app.AlertDialog.Builder のAlertDialog.Builderクラスの指定

// ダイアログ内容の指定(ビュー)
public AlertDialog.Builder setView (View view) 
android.app.AlertDialog.Builder のAlertDialog.Builderクラスの指定

// 単一選択項目の指定(項目リスト,チェック状態項目,クリック通知)
public AlertDialog.Builder setSingleChoiceItems (
                             CharSequence[] items, int checkedItem,
                             DialogInterface.OnClickListener listener) 

// 複数選択項目の指定(項目リスト,チェック状態,クリック通知)
public AlertDialog.Builder setMultiChoiceItems (
                             CharSequence[] items, boolean[] checkedItems,
                             DialogInterface.OnMultiChoiceClickListener listener)
android.view.View.OnClickListener のOnClickListenerインターフェース

// クリックリスナーの処理(オーバーライド)
public abstract void onClick (View v) 
android.content.DialogInterface.OnClickListener のOnClickListenerインターフェース

// クリックリスナーの処理(オーバーライド)
public abstract void onClick (DialogInterface dialog, int which) 


3.プロジェクトの実行(実行構成の作成は、「プロジェクトの新規作成」を参照)
1)実行(R) → 実行(R)


(ダイアログ表示ボタンをクリック)


(テキストダイアログ表示ボタンをクリック)


(チョイスダイアログ表示ボタンをクリック)


(マルチチョイスダイアログ表示ボタンをクリック)


Copyright (C) 2010 プログラミングのテクニックをあなたに!!(リトル・ヘルパー) All Rights Reserved.