ボタンを2つ持つアラートダイアログを表示する - Android

Androidアプリでボタンを1つ持つAlertDialogを表示します。

プロジェクトの作成

Android アプリケーションプロジェクトを作成します。
[New Android Application]ダイアログボックスが表示されますので、以下を設定します。
  • Application Name: "DialogDemo"
  • Project Name: "DialogDemo"
  • Package Name: "com.ipentec.dialogdemo"
  • Minimum Required SDK: "API 8: Android 2.2 (Froyo)"
  • Target SDK: "API 17: Android 4.2 (Jelly Bean)"
  • Compile With: "API 17: Android 4.2 (Jelly Bean)"
  • Theme: "Holo Light with Dark Action Bar"

UI

下図のUIを作成します。
ボタンを1つ、TextViewを1つ配置します。ボタンの"on click"プロパティを"button1_click"に設定しました。

コード

以下のコードを記述します。
package com.iPentec.dialogdemo;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.widget.*;

public class MainActivity extends Activity {

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

  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
  }
  
  public void button1_click(View view){

    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle("ダイアログのタイトル");
    builder.setMessage("ダイアログのメッセージ");
    
    builder.setPositiveButton("YES", new DialogInterface.OnClickListener() {  
      @Override
      public void onClick(DialogInterface dialog, int which) {
        // TODO Auto-generated method stub
        TextView textView2 = (TextView)findViewById(R.id.textView2);
        textView2.setText("YESボタンが押されました。");
      }
    }); 
    
    builder.setNegativeButton("NO", new DialogInterface.OnClickListener() {
      @Override
      public void onClick(DialogInterface dialog, int which) {
        // TODO Auto-generated method stub
        TextView textView2 = (TextView)findViewById(R.id.textView2);
        textView2.setText("NOボタンが押されました。");       
      }
    });
    
    AlertDialog dialog = builder.create();
    dialog.show();
 }
}

解説

追記部分は下記になります。
  public void button1_click(View view){

    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle("ダイアログのタイトル");
    builder.setMessage("ダイアログのメッセージ");
    
    builder.setPositiveButton("YES", new DialogInterface.OnClickListener() {  
      @Override
      public void onClick(DialogInterface dialog, int which) {
        // TODO Auto-generated method stub
        TextView textView2 = (TextView)findViewById(R.id.textView2);
        textView2.setText("YESボタンが押されました。");
      }
    }); 
    
    builder.setNegativeButton("NO", new DialogInterface.OnClickListener() {
      @Override
      public void onClick(DialogInterface dialog, int which) {
        // TODO Auto-generated method stub
        TextView textView2 = (TextView)findViewById(R.id.textView2);
        textView2.setText("NOボタンが押されました。");       
      }
    });
    
    AlertDialog dialog = builder.create();
    dialog.show();
 }

AlertDialogのBuilderオブジェクトのsetsetPositiveButton()メソッドを呼び出して1つ目のボタンを設定します。また、setNegativeButton()メソッドを呼び出して2つ目のボタンを設定します。
    builder.setPositiveButton("YES", new DialogInterface.OnClickListener() {  
      @Override
      public void onClick(DialogInterface dialog, int which) {
        // TODO Auto-generated method stub
        TextView textView2 = (TextView)findViewById(R.id.textView2);
        textView2.setText("YESボタンが押されました。");
      }
    }); 
    
    builder.setNegativeButton("NO", new DialogInterface.OnClickListener() {
      @Override
      public void onClick(DialogInterface dialog, int which) {
        // TODO Auto-generated method stub
        TextView textView2 = (TextView)findViewById(R.id.textView2);
        textView2.setText("NOボタンが押されました。");       
      }
    });

実行結果

プロジェクトを実行します。下図の画面が表示されます。


ボタンをタップするとボタンが2つ表示されるAlertDialogが表示されます。


[YES]ボタンをタップするとTextViewにYESボタンがタップされた旨のメッセージが表示されます。[NO]ボタンをタップした場合、TextViewにNOボタンがタップされた旨のメッセージが表示されます。

著者
iPentecのプログラマー、最近はAIの積極的な活用にも取り組み中。
とっても恥ずかしがり。
最終更新日: 2024-01-04
作成日: 2013-04-24
iPentec all rights reserverd.