Elvenware Android Guide

Elvenware Logo

TOC

Toggle Menu

Charlie Calvert on Elvenware

Writing Code and Prose on Computers

Core Code

OS and Tools

Art

Elvenware

Android Dialogs

Show An Alert Dialog

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Please select one of the Radio Buttons");
builder.setCancelable(true);
builder.setNeutralButton("Ok",
    new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {
            dialog.cancel();
        }
    });
builder.show();     

A More Complex Example

If you want more control, here is how to create a dialog in XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/textPrompt"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" 
        android:layout_marginLeft="20dip" 
        android:layout_marginRight="20dip" 
        android:text="@string/enter_something" 
        android:gravity="left" />

    <EditText
        android:id="@+id/editTextPrompt"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="20dip" 
        android:layout_marginRight="20dip" 
        android:scrollHorizontally="true" 
        android:autoText="false"
        android:capitalize="none"
        android:hint="@string/editTextHint"
        android:gravity="fill_horizontal" />

</LinearLayout>

Here is how to call it without trying to initialize any of the controls that that we defined in the XML:

LayoutInflater inflator = LayoutInflater.from(this);
View view = inflator.inflate(R.layout.dialog_basic, null);
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Prompt");
builder.setView(view);
builder.setPositiveButton("Ok", null);
builder.setNegativeButton("Cancel", null);
AlertDialog inputDialog = builder.create();
inputDialog.show();
return null;

Here is how to set up an AlertDialog (one that has buttons like OK and Cancel) with some initialized content in a TextView. In the previous example, we had a TextView, but we did not try to initialize it's fields. In this case, we use findViewById to find the TextView, and set its content:

private void postStatsDialog()
{
LayoutInflater inflator = LayoutInflater.from(this.activity);
View viewer = inflator.inflate(R.layout.dialog_post_stats, null);
TextView tv = (TextView)viewer.findViewById(R.id.textViewPostStats);
tv.setText("Something here again");
AlertDialog.Builder builder = new AlertDialog.Builder(this.activity);
builder.setTitle("Prompt");
builder.setView(viewer);
builder.setPositiveButton("Ok", null);
builder.setNegativeButton("Cancel", null);

AlertDialog inputDialog = builder.create();
inputDialog.show();

}

Copyright © Charlie Calvert | Elvenware Home | Writing Code | Delphi | CSharp | My Books