AlertDialogを使ってみる.

物凄い間が空いた再開です.

AndroidでAlertDialogを使って,Googleのトップページを表示します.
タブ幅を3にすると,枠の端で折り返されてしまうことが多いのだろうか.

プログラム用に上手く表示できるようにしたい.
SyntaxHighLighterが上手く動かない...

  • activity_mock_alert_dialog.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MockAlertDialogActivity" >

    <Button
        android:id="@+id/dialog_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="Dialog" />


</RelativeLayout>
  • MockAlertDialogActivity.java
package com.example.mockalertdialog;

import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

/**
 * http://google.co.jpを表示するアクティビティ ボタンを押すとダイアログ表示->OKとすると,暗黙的Intentでブラウザに遷移する.
 * 
 */
public class MockAlertDialogActivity extends Activity {

    private Button dialogButton = null;
    private AlertDialog.Builder alertBuilder = null;
    private String URLString = null;
    private Intent intent = null;

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

    @Override
    protected void onResume() {
	super.onResume();

	// URL
	URLString = "http://google.co.jp";

	// AlertDialogの生成
	alertBuilder = new AlertDialog.Builder(MockAlertDialogActivity.this);

	dialogButton = (Button) findViewById(R.id.dialog_button);

	// ボタンのリスナーを無名クラスで生成
	dialogButton.setOnClickListener(new OnClickListener() {

	    // クリック時のメソッド
	    @Override
	    public void onClick(View v) {
		// [Title]はタイトル部, [Message]は本文に該当する
		alertBuilder.setTitle("Warning!");
		alertBuilder.setMessage(URLString);

		// Positive, Neutral, NegativeをAlertDialogでは選択可で,使用方法は自由.
		// Positiveの選択をした場合
		alertBuilder.setPositiveButton("OK",
			new DialogInterface.OnClickListener() {

			    @Override
			    public void onClick(DialogInterface dialog,
				    int which) {

				// 暗黙的インテントの生成.URLの文字列をパースする.
				// Intentを0以上とするとActivity#onActivityResult()に戻って,アプリケーション/Activity間で結果を受け取る事ができる.
				intent = new Intent(Intent.ACTION_VIEW, Uri
					.parse(URLString));
				startActivityForResult(intent, -1);
			    }
			});

		// Neutralの選択をした場合
		alertBuilder.setNeutralButton("Neutral",
			new DialogInterface.OnClickListener() {

			    @Override
			    public void onClick(DialogInterface dialog,
				    int which) {
				Toast.makeText(getApplicationContext(),
					"Neutral", Toast.LENGTH_SHORT).show();
			    }
			});

		// Negativeの選択をした場合
		alertBuilder.setNegativeButton("Cancel",
			new DialogInterface.OnClickListener() {

			    @Override
			    public void onClick(DialogInterface dialog,
				    int which) {
				dialog.cancel();
			    }
			});

		// AlertDialogの表示
		alertBuilder.show();
	    }
	});
    }

    @Override
    protected void onPause() {
	super.onPause();
    }

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