zoukankan      html  css  js  c++  java
  • android的对话框

    前言

      这段时间在研究android平台上的开源项目——StandupTimer,这是由jwood所设计的一个较为简单android应用,用于控制会议时间,类似秒表倒计时。

    android的提醒

      android 的提醒主要有3中方式:Toast Notification,Status Bar Notification,Dialog Notification;在Standup Timer 中使用了很多Dialog notification。特别是在删除某项时,弹出的确认对话框。Dialog Notification 主要分为四种:Alert Dialog,ProgressDialog ,DatePickerDialog ,TimePickerDialog。本文将重点讲述Alert Dialog。

    Alert Dialog

      Alert Dialog的创建比较简单,我们将按步骤来创建一个带有EditText view的警告对话框,通过该对话框创建Standup timer中参加会议的团队。
      第一步,重写 onCreateDialog方法,根据ID创建不同的对话框。
    @Override
    protected Dialog onCreateDialog(int id)
    {
    switch(id)
    {
    case CREATE_TEAM_DIALOG:
    if (createTeamDialog ==null)
    {
    AlertDialog.Builder builder
    =new AlertDialog.Builder(this);
    builder.setTitle(R.string.add_team);
    builder.setView(getTextEntryView());
    builder.setCancelable(
    true);
    //设置确定按钮和监听其事件
    builder.setPositiveButton(R.string .ok, addTeamButtonListener());
    //设定否定按钮和监听其事件
    builder.setNegativeButton(R.string.revert, cancelListener());
    createTeamDialog
    = builder.create();

    }
    return createTeamDialog;
    default:
    Logger.e(
    "Attempting to create an unkonwn dialog with an id of "+ id);
    returnnull;
    }
    }
    AlertDialog.Builder 是用来创建具体警告对话框的。
         setTitle()为设置对话框的标题;
         setView(View)用于给对话框加载View,如果需要的话,这里加载的是一个EditText。
         setCancelable(boolean) 设置返回键是否能撤销对话框,一般为true 
        setPositiveButton()设置按下表示确定按钮时按钮的text,和按钮的事件监听器
        setNegativeButton()设置取消按钮的text 和监听器
      另外如果对话框不需要特别的视图控件的话可以不使用setView()。直接通过 setMessage(Msg)来显示你需要的展示的警告信息。
    Builder各项属性设置完成后,即可通过builder.create(),创建AlertDialog对话框。
     
    第二步展示对话框
      展示对话框非常简单,在你需要弹出提醒的操作里加入showDialog(id) 即可。通常根据id对对话框进行封装。
    privatevoid displayAddTeamDialog() {
    showDialog(CREATE_TEAM_DIALOG);

    }
    第三步编写对话框中按钮事件
      这与普通按钮的事件编写相似,这里按钮的事件处理的是添加一个团队操作。
    private OnClickListener addTeamButtonListener() {

    returnnew DialogInterface.OnClickListener() {
    publicvoid onClick(DialogInterface dialog, int id) {
    EditText collectedTextView
    = (EditText) getTextEntryView().findViewById(R.id.collected_text);
    String name
    = collectedTextView.getText().toString();
    Team.create(name, TeamListActivity.
    this);
    teamListAdapter.add(name);
    }
    };
    }
    返回的是 DialogInterface 下的 OnClickListener。
    private OnClickListener cancelListener() {

    returnnew DialogInterface.OnClickListener() {

    @Override
    publicvoid onClick(DialogInterface dialog, int which) {
    dialog.cancel();

    }
    };
    }
    撤销对话框操作,撤出警告。
     

    关于setView

      代码中有几处调用了getTextEntryView方法,这是一个返回View的自定义方法。setView(View) 可以让展现你想要的View,用来接收用户的输入信息等。
    synchronizedprotected View getTextEntryView() {
    if (txtEntryView ==null) {
    LayoutInflater factory
    = LayoutInflater.from(this);
    txtEntryView
    = factory.inflate(R.layout.collect_text, null);
    }
    return txtEntryView;

    }
    LayoutInflater 可以将res 文件夹下的layout 布局的XML 转化为 View。也可以通过 getLayoutInflater() 或 getSystemService(String) 方法创建LayoutInflater 
    LayoutInflater inflater = (LayoutInflater)context.getSystemService
    Context.LAYOUT_INFLATER_SERVICE);
    inflate(int resId,ViewGroup root),将预先定义的XML布局文件转化为View
    <?xml version="1.0" encoding="utf-8"?>

    <EditText xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/collected_text"
    android:layout_width
    ="fill_parent" android:layout_height="fill_parent"
    android:padding
    ="5dp"/>
  • 相关阅读:
    odoo 的各种domain
    odoo search之时间搜索,时间段查询
    git 修改远程仓库地址
    Windows 挂起进程
    结构体 偏移量 (size_t)&(((s *)0)->m) , list相关
    Data Flow Diagram with Examples
    Windows环境,获取当前线程的ID,GetCurrentThreadId
    获取 保存 系统信息 [Windows]
    notepad正则删除关键词所在行
    文件或文件夹改变后,发信号让系统刷新
  • 原文地址:https://www.cnblogs.com/keyindex/p/1814438.html
Copyright © 2011-2022 走看看