AlertDialog Demo详解大全:参考延引自:http://www.oschina.net/question/54100_32486:
package com.wqn.test.activity;
import java.util.Random;
import java.util.Timer;
import java.util.TimerTask;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.drawable.GradientDrawable.Orientation;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.wqn.test.R;
import com.wqn.test.domain.ArrayListSerializable;
import com.wqn.test.domain.Menu;
import com.wqn.test.domain.Person;
/**
* 在两个Activity 之间进行 传输List<Object>
* @author admin
*
*/
public class BundlerTransListObjectActvity extends Activity implements OnClickListener{
private TextView serializable;
private TextView parcelable;
private TextView exitDialog;
private TextView threeBtDialog;
private TextView editTextDialog;
private TextView multiChoiceDialog;
private TextView singleChoiceDialog;
private TextView listItemsDialog;
private TextView customsDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
initViews();
initEvents();
}
private void initViews() {
serializable = (TextView) findViewById(R.id.serialiable);
parcelable = (TextView) findViewById(R.id.parcelable);
exitDialog = (TextView) findViewById(R.id.exit_dialog);
threeBtDialog = (TextView) findViewById(R.id.three_bt_dialog);
editTextDialog = (TextView) findViewById(R.id.edittext_dialog);
multiChoiceDialog = (TextView) findViewById(R.id.multi_choice_dialog);
singleChoiceDialog = (TextView) findViewById(R.id.single_choice_dialog);
listItemsDialog = (TextView) findViewById(R.id.list_items_dialog);
customsDialog = (TextView) findViewById(R.id.customs_dialog);
}
private void initEvents() {
serializable.setOnClickListener(this);
parcelable.setOnClickListener(this);
exitDialog.setOnClickListener(this);
threeBtDialog.setOnClickListener(this);
editTextDialog.setOnClickListener(this);
multiChoiceDialog.setOnClickListener(this);
singleChoiceDialog.setOnClickListener(this);
listItemsDialog.setOnClickListener(this);
customsDialog.setOnClickListener(this);
}
private void loadSerializableData(){
ArrayListSerializable<Menu> menus = new ArrayListSerializable<Menu>();
for (int i=0 ; i<10; i++) {
Menu menu = new Menu();
menu.setId((long)i);
menu.setMenuName("菜单" + i);
menus.add(menu);
}
final Intent it = new Intent();
it.setClass(this, ReceiverListObjectActivity.class);
Bundle bundle = new Bundle();
bundle.putSerializable("menus", menus);
it.putExtra("which", "serializable");
it.putExtras(bundle);
new Timer().schedule(new TimerTask() {
@Override
public void run() {
startActivity(it);
}
}, 2000);
}
private void loadParcelableData(){
Person person = new Person();
person.setId(new Random().nextLong());
person.setName("personName");
final Intent it = new Intent();
it.setClass(this, ReceiverListObjectActivity.class);
Bundle bundle = new Bundle();
bundle.putParcelable("person", person);
it.putExtra("which", "parcelable");
it.putExtras(bundle);
new Timer().schedule(new TimerTask() {
@Override
public void run() {
startActivity(it);
}
}, 2000);
}
private void exitDialogShow() {
AlertDialog.Builder dialogBuilder = new Builder(this);
dialogBuilder.setTitle("提示");
dialogBuilder.setMessage("确定退出吗?");
dialogBuilder.setIcon(R.drawable.ic_launcher);
dialogBuilder.setPositiveButton("确定", new AlertDialog.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(BundlerTransListObjectActvity.this, "您点击了确定键", Toast.LENGTH_SHORT).show();
dialog.dismiss();
}
})
.setNegativeButton("取消", new AlertDialog.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(BundlerTransListObjectActvity.this, "您点击了取消键", Toast.LENGTH_SHORT).show();
dialog.dismiss();
}
})
.create().show();
}
/**三个按钮的dialog*/
private void threeBtDialogShow() {
new AlertDialog.Builder(this)
.setTitle("问卷调查")
.setMessage("你觉得Android开发前途怎么样?")
.setIcon(android.R.drawable.btn_star)
.setPositiveButton("非常好", new AlertDialog.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(BundlerTransListObjectActvity.this, "你觉得Android开发前途非常好!", Toast.LENGTH_SHORT).show();
dialog.dismiss();
}
})
.setNegativeButton("非常差", new AlertDialog.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(BundlerTransListObjectActvity.this, "你觉得Android开发前途非常差!", Toast.LENGTH_SHORT).show();
dialog.dismiss();
}
})
.setNeutralButton("一般", new AlertDialog.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(BundlerTransListObjectActvity.this, "你觉得Android开发前途一般!", Toast.LENGTH_SHORT).show();
dialog.dismiss();
}
}).show();
}
/**带编辑框的dialog*/
private void editTextDialogShow() {
final EditText dialogEditext = new EditText(this);
new AlertDialog.Builder(this)
.setTitle("请输入")
.setIcon(android.R.drawable.ic_dialog_info)
.setView(dialogEditext)
.setPositiveButton("确定", new AlertDialog.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(BundlerTransListObjectActvity.this, "您点击了确定键\n输入的内容为:"+dialogEditext.getText(), Toast.LENGTH_SHORT).show();
dialog.dismiss();
}
})
.setNegativeButton("取消", new AlertDialog.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(BundlerTransListObjectActvity.this, "您点击了取消键\n输入的内容为:"+dialogEditext.getText(), Toast.LENGTH_SHORT).show();
dialog.dismiss();
}
})
.create().show();
}
/** 多选 dialog*/
private void multiChoiceDialogShow() {
final String items[] = new String[]{"Android","IOS"};
final boolean isCheckeds[] = new boolean[] {false,false};
new AlertDialog.Builder(this)
.setTitle("请选择")
.setIcon(android.R.drawable.ic_dialog_info)
.setMultiChoiceItems(items, isCheckeds, new AlertDialog.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
if (isCheckeds[which]) {
Toast.makeText(BundlerTransListObjectActvity.this, "您选中了第" + which +"个选项,内容为:" + items[which], Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(BundlerTransListObjectActvity.this, "您取消选中第" + which +"个选项,内容为:" + items[which], Toast.LENGTH_SHORT).show();
}
}
})
.setPositiveButton("确定", new AlertDialog.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(BundlerTransListObjectActvity.this, "您点击了确定键", Toast.LENGTH_SHORT).show();
dialog.dismiss();
}
})
.setNegativeButton("取消", new AlertDialog.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(BundlerTransListObjectActvity.this, "您点击了取消键", Toast.LENGTH_SHORT).show();
dialog.dismiss();
}
})
.create().show();
}
/** 单选 dialog*/
private void singleChoiceDialogShow() {
final String items[] = new String[]{"Android","IOS"};
new AlertDialog.Builder(this)
.setTitle("请选择")
.setIcon(android.R.drawable.ic_dialog_info)
.setSingleChoiceItems(items, 0, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(BundlerTransListObjectActvity.this, "您选中了第" + which +"个选项,内容为:" + items[which], Toast.LENGTH_SHORT).show();
}
})
.setPositiveButton("确定", new AlertDialog.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(BundlerTransListObjectActvity.this, "您点击了确定键", Toast.LENGTH_SHORT).show();
dialog.dismiss();
}
})
.setNegativeButton("取消", new AlertDialog.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(BundlerTransListObjectActvity.this, "您点击了取消键", Toast.LENGTH_SHORT).show();
dialog.dismiss();
}
})
.create().show();
}
/** 列表 dialog*/
private void listItemsDialogShow() {
final String items[] = new String[]{"Android","IOS"};
new AlertDialog.Builder(this)
.setTitle("请选择")
.setIcon(android.R.drawable.ic_dialog_info)
.setItems(items, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(BundlerTransListObjectActvity.this, "您选中了第" + which +"个选项,内容为:" + items[which], Toast.LENGTH_SHORT).show();
}
})
.setPositiveButton("确定", new AlertDialog.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(BundlerTransListObjectActvity.this, "您点击了确定键", Toast.LENGTH_SHORT).show();
dialog.dismiss();
}
})
.setNegativeButton("取消", new AlertDialog.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(BundlerTransListObjectActvity.this, "您点击了取消键", Toast.LENGTH_SHORT).show();
dialog.dismiss();
}
})
.create().show();
}
/** 自定义 dialog*/
private void customsDialogShow() {
final String items[] = new String[]{"Android","IOS"};
LinearLayout customLLayout = new LinearLayout(this);
int W,H;
customLLayout.setBackgroundColor(Color.parseColor("#ffffff"));
LinearLayout.LayoutParams llp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.WRAP_CONTENT);
customLLayout.setLayoutParams(llp);
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
W = dm.widthPixels;
H = dm.heightPixels;
final TextView hobby = new TextView(this);
hobby.setText("ID Card:");
hobby.setTextColor(Color.parseColor("#555555"));
hobby.setTextSize(13);
LinearLayout.LayoutParams llpTitle = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.MATCH_PARENT);
llpTitle.setMargins(15, 0, 15, 0);
hobby.setGravity(Gravity.CENTER_HORIZONTAL|Gravity.CENTER_VERTICAL);
hobby.setLayoutParams(llpTitle);
customLLayout.addView(hobby);
final EditText content = new EditText(this);
content.setWidth(W - hobby.getWidth() - 30);
content.setTextColor(Color.parseColor("#ff0000"));
customLLayout.addView(content);
new AlertDialog.Builder(this)
.setTitle("请选择")
.setIcon(android.R.drawable.ic_dialog_info)
.setView(customLLayout)
.setPositiveButton("确定", new AlertDialog.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(BundlerTransListObjectActvity.this, "您点击了确定键\nID Card:" + content.getText(), Toast.LENGTH_SHORT).show();
dialog.dismiss();
}
})
.setNegativeButton("取消", new AlertDialog.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(BundlerTransListObjectActvity.this, "您点击了取消键\nID Card:" + content.getText(), Toast.LENGTH_SHORT).show();
dialog.dismiss();
}
})
.create().show();
}
@Override
public void onClick(View v) {
if (v == serializable) {
loadSerializableData();
} else if (v == parcelable) {
loadParcelableData();
} else if (v == exitDialog) {
exitDialogShow();
} else if (v == threeBtDialog) {
threeBtDialogShow();
} else if (v == editTextDialog) {
editTextDialogShow();
} else if (v == multiChoiceDialog) {
multiChoiceDialogShow();
} else if (v == singleChoiceDialog) {
singleChoiceDialogShow();
} else if (v == listItemsDialog) {
listItemsDialogShow();
} else if (v == customsDialog) {
customsDialogShow();
}
}
}