加入收藏 | 设为首页 | 会员中心 | 我要投稿 济南站长网 (https://www.0531zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

Android使用对话框达成

发布时间:2021-11-25 20:25:21 所属栏目:教程 来源:互联网
导读:Android为程序员准备的四种类型的Dialog:AlertDialog、ProgressDialog、DatePickerDialog、TimePickerDialog。 使用它们是很简单的。我们经常看到,当我们按下退出键时会出来一个提示框。我们先看看它的实现。 import android.app.Activity; import android

Android为程序员准备的四种类型的Dialog:AlertDialog、ProgressDialog、DatePickerDialog、TimePickerDialog。
 
使用它们是很简单的。我们经常看到,当我们按下退出键时会出来一个提示框。我们先看看它的实现。
 
import android.app.Activity;  
import android.app.AlertDialog;  
import android.app.Dialog;  
import android.content.DialogInterface;  
import android.os.Bundle;  
import android.widget.Button;  
import android.view.View;  
import android.view.View.OnClickListener;  
  
public class AlertDialogActivity extends Activity implements OnClickListener{  
    /** Called when the activity is first created. */  
    Button button;  
    @Override  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.main);  
        button = (Button)findViewById(R.id.exitbutton);  
        button.setOnClickListener(this);  
    }  
    @Override  
    public void onClick(View v) {  
        ExitDialog();  
    }  
    private void ExitDialog(){  
        AlertDialog.Builder builder = new AlertDialog.Builder(AlertDialogActivity.this);  
        builder.setTitle("Exit Confirm").setIcon(R.drawable.icon)  
            .setMessage("Are you sure to Exit programe?")  
            .setPositiveButton("确定", new DialogInterface.OnClickListener() {  
                @Override  
                public void onClick(DialogInterface dialog, int which) {  
                    dialog.dismiss();  
                    AlertDialogActivity.this.finish();  
                }  
            }).setNegativeButton("取消", new DialogInterface.OnClickListener(){  
                @Override  
                public void onClick(DialogInterface dialog, int which) {  
                    dialog.dismiss();  
                }  
            });  
        Dialog dialog = builder.create();  
        dialog.show();  
    }  
}  
上面的代码还不算太糟糕,想必大家熟练后会直接 new 一个 AlertDialog.Builder对象:
 
new AlertDialog.Builder(myActivity.this).setTitle().setMessage().…….create().show();  
有时我们需要添加一个列表,供用户选择:
 
final CharSequence[] items = {"Red", "Green", "Blue"};  
  
AlertDialog.Builder builder = new AlertDialog.Builder(this);  
builder.setTitle("Pick a color");  
builder.setItems(items, new DialogInterface.OnClickListener() {  
    public void onClick(DialogInterface dialog, int item) {  
        Toast.makeText(getApplicationContext(), items[item], Toast.LENGTH_SHORT).show();  
    }  
});  
AlertDialog alert = builder.create();  
也许会设计成单选式样,看起开明朗一点:
final CharSequence[] items = {"Red", "Green", "Blue"};  
  
AlertDialog.Builder builder = new AlertDialog.Builder(this);  
builder.setTitle("Pick a color");  
builder.setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() {  
    public void onClick(DialogInterface dialog, int item) {  
        Toast.makeText(getApplicationContext(), items[item], Toast.LENGTH_SHORT).show();  
    }  
});  
AlertDialog alert = builder.create();  
以上是Android dev Guide上的源码。不需要多余的解释。下面看看建立一个自定义的对话框需要的步骤:
 
1:为自定义的对话框准备一个布局Layout;
 
<?xml version="1.0" encoding="utf-8"?>  
<LinearLayout  
  xmlns:android="http://schemas.android.com/apk/res/android"  
  android:orientation="vertical"  
  android:layout_width="match_parent"  
  android:layout_height="match_parent">  
    <TextView   
    android:id="@+id/textview"  
    android:layout_width="fill_parent"  
    android:layout_height="wrap_content"  
    android:text="请输入文本"  
    />  
    <EditText   
    android:id="@+id/edittext"  
    android:layout_width="fill_parent"  
    android:layout_height="wrap_content"  
    android:autoText="false"  
    />  
</LinearLayout>  
2:将这个布局导入到一个View 中;
 
3:创建一个Builder 对象;
 
4:设置成我们的视图View;
 
LayoutInflater inflater = LayoutInflater.from(ctx);  
view = inflater.inflate(R.layout.dialog, null);  
AlertDialog.Builder builder = new AlertDialog.Builder(ctx);  
builder.setView(view);  
5:设置按钮 和 监听器;
 
builder.setTitle("这是一个自定义的对话框");  
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {  
    @Override  
    public void onClick(DialogInterface dialog, int which) {  
        EditText edittext = (EditText)view.findViewById(R.id.edittext);  
        enterText = edittext.getText().toString();  
        button.setText(enterText);  
        }  
    });  
6:用Builder 创建一个Dialog;
 
7:显示这个Dialog。
 
AlertDialog dialog = builder.create();  
builder.show();  
下面是全部代码。很随意,很简单,所以很杂乱。
 
import android.app.Activity;  
import android.app.AlertDialog;  
import android.content.Context;  
import android.content.DialogInterface;  
import android.os.Bundle;  
import android.widget.Button;  
import android.widget.EditText;  
import android.view.LayoutInflater;  
import android.view.View;  
public class MyDialogActivity extends Activity implements View.OnClickListener{  
    /** Called when the activity is first created. */  
    Button button;  
    @Override  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.main);  
        button = (Button)findViewById(R.id.button);  
        button.setOnClickListener(this);  
    }  
    @Override  
    public void onClick(View v) {  
        TextDialog textDialog = new TextDialog((Button)v,this);//我将Button传了进去,这是获得修改文本的方法   
    }  
    private class TextDialog extends AlertDialog{  
        private String enterText;  
        private Context ctx;  
        private View view;  
        Button button;  
        protected TextDialog(Button btn,Context context) {  
            super(context);  
            ctx = context;  
            button = btn;  
        LayoutInflater inflater = LayoutInflater.from(ctx);  
        view = inflater.inflate(R.layout.dialog, null);  
        AlertDialog.Builder builder = new AlertDialog.Builder(ctx);  
        builder.setView(view);  
        builder.setTitle("这是一个自定义的对话框");  
        builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {  
            @Override  
            public void onClick(DialogInterface dialog, int which) {  
                EditText edittext = (EditText)view.findViewById(R.id.edittext);  
                enterText = edittext.getText().toString();  
                button.setText(enterText);//点击确定后,按钮的文本会被修改   
                }  
            });  
        AlertDialog dialog = builder.create();  
        builder.show();  
        }  
    }  
}  

(编辑:济南站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读