AlertDialog.Builder对话框类的⽤法1.在测试时,如何实现⼀个提⽰
可以使⽤
Toast.makeText(this, "这是⼀个提⽰",Toast.LENGTH_SHORT).show();
//从资源⽂件l ⾥⾯取提⽰信息
Toast.makeText(this, getString(R.string.welcome),Toast.LENGTH_SHORT).show();
这个提⽰会⼏秒钟后消失
2.可以使⽤AlertDialog.Builder 才产⽣⼀个提⽰框.
例如像messagebox那样的
newAlertDialog.Builder(this)
.setTitle("Android 提⽰")
.setMessage("这是⼀个提⽰,请确定")
.
show();
带⼀个确定的对话框
newAlertDialog.Builder(this)
.setMessage("这是第⼆个提⽰")
.setPositiveButton("确定",
newDialogInterface.OnClickListener(){
public void onClick(DialogInterface dialoginterface, inti){
//按钮事件
}
})
.show();
AlertDialog.Builder 还有很多复杂的⽤法,有确定和取消的对话框
newAlertDialog.Builder(this)
alertdialog使用方法.setTitle("提⽰")
.setMessage("确定退出?")
.setIcon(R.drawable.quit)
.setPositiveButton("确定", new DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog, int whichButton){
setResult(RESULT_OK);//确定按钮事件
finish();
}
})
.
setNegativeButton("取消", new DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog, int whichButton){
//取消按钮事件
}
})
.show();
public static final int ITEM_1_ID =Menu.FIRST;
public static final int ITEM_2_ID = Menu.FIRST +1;
public static final int ITEM_3_ID = Menu.FIRST +2;
public boolean onCreateOptionsMenu(Menu menu){
//不带图标的menu
menu.add(0, ITEM_1_ID, 0,"item-1");
//带图标的menu
menu.add(0, ITEM_2_ID, 1,"item-2").setIcon(R.drawable.editbills2);
menu.add(0, ITEM_3_ID, 2,"item-3").setIcon(R.drawable.billsum1);
return true;
}
public booleanonOptionsItemSelected(MenuItemitem){
switch (ItemId()) {
case 1:
Toast.makeText(this,"menu1",Toast.LENGTH_SHORT).show(); return true;
case 2:
return true;
case 3:
return true;
}
return false;
}
4.Activity 的切换
2个Activity 的切换,没有数据传递
//从A到B
Intent intent = new Intent();
intent.setClass(A.this,B.class);
startActivity(intent);
2个Activity 之间传递数据
相关的⼏个函数
startActivityForResult
public final void setResult(int resultCode, String data)
回调函数
protected void onActivityResult(int requestCode, int resultCode,Intent data) 例如A到B,从B得到数据
//A到B
static final int RG_REQUEST = 0;
Intent intent = new Intent();
intent.setClass(A.this,B.class);
startActivityForResult(intent,RG_REQUEST);
//在B中处理
Bundle bundle = new Bundle();
bundle.putString("DataKey",Text().toString());//给bundle 写⼊数据
Intent mIntent = new Intent();
mIntent.putExtras(bundle);
setResult(RESULT_OK, mIntent);
finish();
//最后在A的回调函数⾥⾯接收数据
if (requestCode == RG_REQUEST) {
if (resultCode == RESULT_CANCELED)
setTitle("");
else if(resultCode == RESULT_OK) {
setTitle((CharSequenceExtra("DataKey"));
}
}
使⽤Dialog类: 让我们先来看下如何借助Dialog类创建对话框,⾸先,我们需要定义⼀个继承了Dialog类的⼦类:
class MyDialog extends Dialog{
public MyDialog(Context context) {
super(context);
}
}
然后,为这个对话框的内容定义⼀个布局⽂件,⽐如:
接着,将上⾯这份布局⽂件应⽤到我们的对话框上来:
class MyDialog extends Dialog{
….
@Override
protected void onCreate(Bundle savedInstanceState) {
Log.d(”TestApp”, “Dialog created”);
setContentView(dialog);
}
}
现在,我们就可以调⽤这个对话框类的show⽅法来让它显⽰:
…
MyDialog dialog = new MyDialog(context);
dialog.show();
…
对话框组件的事件处理机制和Activity是相同的,让我们来看下如何处理对话框中的OK和Cancle按钮的事件:
class MyDialog extends Dialogimplements OnClickListener {
privateButton okButton;
privateButton cancelButton;
privateEditText nameEditText;
protected void onCreate(Bundle savedInstanceState) {
okButton = (Button) findViewById(R.id.okButton);
cancelButton = (Button) findViewById(R.id.cancelButton);
nameEditText = (EditText)findViewById(R.id.nameEditText);
okButton.setOnClickListener(this);
cancelButton.setOnClickListener(this);
}
public void onClick(View view) {
switch (Id()) {
case R.id.okButton:
dismiss();
break;
case R.id.cancelButton:
cancel();
break;
}
}
}
在对话框关闭时,对话框类的dismiss()⽅法将会被调⽤,该⽅法可以被对话框⾃⾝调⽤,也可以被其他外部代码调⽤。
对话框⽀持“取消”功能,“取消”的含义是指不再需要执⾏对话框上的任何功能和动作。对话框的取消可以通过调⽤cancel()⽅法来实现。取消对话框也将会⾃动调⽤dismiss()⽅法。
当⽤户点击⼿机设备上的“返回”按钮时,屏幕上的对话框将会被取消,如果你想让你的对话框不在这种情况下被取消掉的话,你可以如下设置你的对话框:
setCancelable(false);
对话框的取消和关闭事件可以通过OnCancelListener和OnDismissListener两个来被监听处理。
从对话框中返回信息: 现在,到了我们要从对话框上获取⽤户输⼊的值,将它返回到主调的Activity中的时候了。然⽽,Dialog类并没有提供可以直接返回这些值的⽅法…但是,我们可以使⽤⾃⼰创建的监听类:
public interface MyDialogListener{
public void onOkClick(String name);
public void onCancelClick();
}
我们的对话框类的构造⽅法同时需要作⼀点⼩⼩的修改:
public MyDialog(Context context,MyDialogListener listener) {
super(context);
this.listener = listener;
}
接着,你就得在创建这个对话框的时候提供⼀个已经实现了MyDialogListener这接⼝的实现对象了。
然后,我们要在对话框的onclick⽅法中传出这个值:
public void onClick(View view){
switch (Id()) {
case R.id.okButton:
dismiss();
break;
case R.id.cancelButton:
cancel();
break;
}
}
使⽤AlertDialog: AlertDialog类是Dialog类的⼦类。它默认提供了3个按钮和⼀个⽂本消息。这些按钮可以按需要来使他们显⽰或隐藏。下列代码将创建⼀个AlertDialog对话框,对话框上将向⽤户展⽰⼀个问题以及备选的yes/no答案:
AlertDialog dialog = newAlertDialog.Builder(context).create();
dialog.setMessage(”Do you play cricket?”);
dialog.setButton(”Yes”, myOnClickListener);
dialog.setButton2(”No”, myOnClickListener);
dialog.show();
myOnClickListener这个事件的代码可以类似如下:
public void onClick(DialogInterfacedialog, int i) {
switch (i) {
case AlertDialog.BUTTON1:
break;
case AlertDialog.BUTTON2:
break;
}
}
AlertDialog.Builder: AlertDialog类中有⼀个内部类,名为‘Builder’,Builder类提供了为对话框添加多选或单选列表,以及为这些列表添加事件处理的功能。另外,这个Builder类将AlertDialog对话框上的3个按钮按照他们的位置分别称呼为:PositiveButton, NeutralButton,NegativeButton 下列代码是⼀个多选列表的例⼦:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论