layout
-------------------------------------------------------
activity_main.xml
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/screen" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <LinearLayout android:layout_width="fill_parent" android:layout_height="match_parent" android:orientation="vertical" > <Button android:id="@+id/button1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/alert_dialog_two_buttons_text" /> <Button android:id="@+id/button2" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/alert_dialog_three_buttons_text" /> <Button android:id="@+id/button3" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/alert_dialog_custom_buttons_text" /> <Button android:id="@+id/button4" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/alert_dialog_progress_buttons_text" /> <Button android:id="@+id/button5" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/alert_dialog_radio_buttons_text" /> <Button android:id="@+id/button6" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/alert_dialog_checkbox_buttons_text" /> </LinearLayout> </ScrollView>
input.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" > <TextView android:id="@+id/uname_view" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="20dip" android:layout_marginRight="20dip" android:text="@string/alert_dialog_uname" android:textAppearance="?android:attr/textAppearanceMedium" /> <EditText android:id="@+id/uname_edit" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginLeft="20dip" android:layout_marginRight="20dip" android:capitalize="none" /> <TextView android:id="@+id/upass_view" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="20dip" android:layout_marginRight="20dip" android:text="@string/alert_dialog_upass" android:textAppearance="?android:attr/textAppearanceMedium" /> <EditText android:id="@+id/upass_edit" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginLeft="20dip" android:layout_marginRight="20dip" android:capitalize="none" android:password="true" android:textAppearance="?android:attr/textAppearanceMedium" /> </LinearLayout>
Activity
-------------------------------------------------------
MainActivity.java
package com.dialog;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
/**
*
* 项目名称:com.dialog
* 类 名 称:MainActivity
* 类 描 述: 弹出对话框的使用
* 创 建 人:fy
* 创建时间:2014-3-2 上午8:48:13
* Copyright (c) 方勇-版权所有
*/
public class MainActivity extends FragmentActivity implements OnClickListener {
FragmentSearch dialogFragment;
private Button btn1;
private Button btn2;
private Button btn3;
private Button btn4;
private Button btn5;
private Button btn6;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViews();
setListeners();
}
@Override
public void onClick(View v) {
showSearchDialog(v.getId());
}
private void findViews() {
btn1 = (Button) findViewById(R.id.button1);
btn2 = (Button) findViewById(R.id.button2);
btn3 = (Button) findViewById(R.id.button3);
btn4 = (Button) findViewById(R.id.button4);
btn5 = (Button) findViewById(R.id.button5);
btn6 = (Button) findViewById(R.id.button6);
}
private void setListeners() {
btn1.setOnClickListener(this);
btn2.setOnClickListener(this);
btn3.setOnClickListener(this);
btn4.setOnClickListener(this);
btn5.setOnClickListener(this);
btn6.setOnClickListener(this);
}
private void showSearchDialog(int id) {
dialogFragment = new FragmentSearch();
Bundle bundle = new Bundle();
bundle.putInt("id", id);
dialogFragment.setArguments(bundle);
dialogFragment.show(super.getSupportFragmentManager(), "showSearchDialog");
}
}
FragmentSearch.java
package com.dialog;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnMultiChoiceClickListener;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
/**
*
* 项目名称:com.dialog
* 类 名 称:FragmentSearch
* 类 描 述: 对话框
* 创 建 人:fy
* 创建时间:2014-3-2 上午9:11:42
* Copyright (c) 方勇-版权所有
*/
public class FragmentSearch extends DialogFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
int id = getArguments().getInt("id");
switch (id) {
// 两个按钮的对话框
case R.id.button1:
builder.setMessage(R.string.alert_dialog_two_buttons_text)
.setPositiveButton(R.string.alert_dialog_ok, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
Toast.makeText(getActivity(), "ok...", 3000).show();
}
}).setNegativeButton(R.string.alert_dialog_cancel, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
Toast.makeText(getActivity(), "canel...", 3000).show();
}
});
break;
// 三个按钮的对话框
case R.id.button2:
builder.setMessage(R.string.alert_dialog_three_buttons_text)
.setPositiveButton(R.string.alert_dialog_ok, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
Toast.makeText(getActivity(), "ok...", 3000).show();
}
}).setNeutralButton(R.string.alert_dialog_something, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
Toast.makeText(getActivity(), "something", 3000).show();
}
}).setNegativeButton(R.string.alert_dialog_cancel, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
Toast.makeText(getActivity(), "canel...", 3000).show();
}
});
break;
// 文本输入对话框:
case R.id.button3:
LayoutInflater inflater = LayoutInflater.from(getActivity());
final View view = inflater.inflate(R.layout.input, null);
builder.setView(view);
builder.setMessage(R.string.alert_dialog_custom_buttons_text)
.setPositiveButton(R.string.alert_dialog_ok, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
EditText uname = (EditText) view.findViewById(R.id.uname_edit);
Toast.makeText(getActivity(), uname.getText().toString(), 3000).show();
}
})
.setNegativeButton(R.string.alert_dialog_cancel, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
Toast.makeText(getActivity(), "canel...", 3000).show();
}
});
break;
// 进度条对话框:
case R.id.button4:
ProgressDialog dialog = new ProgressDialog(getActivity());
dialog.setTitle("进度条对话框");
dialog.setMessage("下载中........");
return dialog;
// 单选按钮对话框
case R.id.button5:
final String[] items = new String[] { "男", "女" };
builder.setSingleChoiceItems(items, 0, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
Toast.makeText(getActivity(), items[item], Toast.LENGTH_SHORT).show();
}
});
break;
// 复选按钮对话框
case R.id.button6:
final String[] item = new String[] { "卖萌", "上网" };
builder.setMultiChoiceItems(item, null, new OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
if (isChecked)
Toast.makeText(getActivity(), item[which], Toast.LENGTH_SHORT).show();
}
});
break;
default:
break;
}
return builder.create();
}
}
结果
-------------------------------------------------------