亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Android常用對話框使用大全

 更新時(shí)間:2016年12月19日 10:38:28   作者:OldTogether  
我們隨處可見對話框,該怎么制作?這篇文章主要為大家詳細(xì)介紹了Android常用對話框使用大全,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

日常生活中我們隨處可見對話框,上面有很多提示信息,更加方便提示用戶進(jìn)行不同的操作。

一、對話框的兩個(gè)特點(diǎn)和一些常見的對話框

1.當(dāng)彈出對話框是會結(jié)束UI線程(即主線程);

2.當(dāng)前的Activity會失去焦點(diǎn);

3.消息對話框、確認(rèn)對話框、列表對話框、單選和多選對話框、自定義對話框

二、對話框的組成(一般有四部分組成)

1.圖標(biāo)

2.標(biāo)題

3.內(nèi)容

4.按鈕

這里寫圖片描述

三、那么如何創(chuàng)建一個(gè)對話框呢?(四步組成)

1.第一步創(chuàng)建AlertDialog.Builder對象(建造者模式)

2.第二步設(shè)置圖標(biāo)、標(biāo)題、內(nèi)容和按鈕等區(qū)域

3.第三步調(diào)用create()方法來創(chuàng)建(一般自動(dòng)調(diào)用)

4.第四步調(diào)用show()方法來顯示

四、點(diǎn)擊跳轉(zhuǎn)界面和長按彈出對話框的業(yè)務(wù)邏輯

1.接著上面的學(xué)的ListView來實(shí)現(xiàn)常見的操作,在日常生活中,我們經(jīng)常聊qq,在聊天列表中,但我們點(diǎn)擊某一行時(shí),會進(jìn)入聊天界面,當(dāng)我們長按某一行時(shí),會彈出置頂和刪除小提示。

2.MainActivity.java代碼如下

package com.oldtogether.adapterdemo2;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.view.View.OnLongClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;

public class MainActivity4 extends ActionBarActivity implements OnItemClickListener, OnItemLongClickListener {
 // 創(chuàng)建數(shù)組,采用for循環(huán)進(jìn)行遍歷
 private int[] imageIds = new int[] { R.drawable.daxiang, R.drawable.maozi, R.drawable.nangua, R.drawable.nanguobq,
 R.drawable.tiaopi, R.drawable.xiaolian, R.drawable.xin, R.drawable.weixin, R.drawable.hongx,
 R.drawable.xm };
 private String[] titles = new String[] { "賣萌大象", "圣誕帽子", "憤怒南瓜", "難過表情", "調(diào)皮表情", "我倩的笑臉表情", "oldtogether愛心", "微信",
 "粉色少女心", "一代擼" };
 private String[] versions = new String[] { "版本:1.10", "版本:2.10", "版本:1.11", "版本:2.12", "版本:3.10", "版本:2.20",
 "版本:5.20", "版本:1.23", "版本:2.21", "版本:2.40", };
 private String[] sizes = new String[] { "大小:32.01M", "大?。?2.02M", "大?。?3.01M", "大?。?1.01M", "大?。?1.01M",
 "大?。?1.01M", "大?。?3.01M", "大小:33.01M", "大?。?3.01M", "大?。?3.01M", };

 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.listview);

 // 1、過的ListView對象
 ListView lv = (ListView) findViewById(R.id.lv_play);
 // 2、數(shù)據(jù)源
 List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
 for (int i = 0; i < titles.length; i++) {
 Map<String, Object> map = new HashMap<String, Object>();
 map.put("logo", imageIds[i]);
 map.put("title", titles[i]);
 map.put("version", versions[i]);
 map.put("size", sizes[i]);
 list.add(map);
 }
 // 3、設(shè)置適配器
 MyAdapter3 adapter3 = new MyAdapter3(this);
 adapter3.setList(list);// 傳入數(shù)據(jù)
 // 4、關(guān)聯(lián)適配器
 lv.setAdapter(adapter3);
 // 5、為ListView設(shè)置事件監(jiān)聽器(一下兩個(gè)常用事件),讓主MainActivity2實(shí)現(xiàn)接口,并重寫方法
 lv.setOnItemClickListener(this);
 lv.setOnItemLongClickListener(this);
 }

 @Override
 public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
 /* 創(chuàng)建了一個(gè)意圖對象,調(diào)用setClass方法表明“在那個(gè)Activity中調(diào)用那個(gè)Activity”次意圖*/ 
 Intent intent = new Intent();
 intent.setClass(getApplicationContext(), DetailActivity.class);

 //獲得點(diǎn)擊行的數(shù)據(jù)
 HashMap <String,Object> itemMap= (HashMap<String,Object>) parent.getItemAtPosition(position);
 intent.putExtra("index", ""+position);//獲得編號
 intent.putExtra("title", ""+itemMap.get("title"));//獲得標(biāo)題
 startActivity(intent);
 }

 @Override
 public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
 AlertDialog.Builder builder=new AlertDialog.Builder(this);
 builder.setIcon(R.drawable.ic_launcher);
 builder.setTitle("消息提示");
 builder.setMessage("這是一個(gè)簡單的標(biāo)題");
 builder.setPositiveButton("確定", new DialogInterface.OnClickListener() {

 @Override
 public void onClick(DialogInterface dialog, int which) {
 //點(diǎn)擊對話框中的確定按鈕會出現(xiàn)一個(gè)Toast提示框
 Toast.makeText(MainActivity4.this, "點(diǎn)擊了確定", Toast.LENGTH_LONG).show();
 }
 });
 builder.create().show();
 return true;
 /*
 * 返回值代表了事件的消化 1、true:表示消化掉事件,事件不會繼續(xù)傳遞 2、false:表示不消化事件,事件繼續(xù)傳遞
 * 結(jié)論:如果希望長按事件后,不在出現(xiàn)點(diǎn)擊事件,則應(yīng)將返回值設(shè)置為true
 */
 }
}

3.代碼簡潔之“連點(diǎn)”

1).通過創(chuàng)建者模式獲得Builder對象,然后通過連點(diǎn)方式調(diào)用其方法可使代碼簡化;

2).連點(diǎn)使用的原則是,所調(diào)用的方法返回值是當(dāng)前對象本身;

3).下面是通過連點(diǎn)在長按方法中實(shí)現(xiàn)此相同功能的代碼。

@Override
 public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
 new AlertDialog.Builder(this)
 .setIcon(R.drawable.ic_launcher)
 .setTitle("消息提示")
 .setMessage("這是一個(gè)簡單的標(biāo)題")
 .setPositiveButton("確定", new DialogInterface.OnClickListener() {

 @Override
 public void onClick(DialogInterface dialog, int which) {
 Toast.makeText(MainActivity4.this, "點(diǎn)擊了確定", Toast.LENGTH_LONG).show();
 }
 })
 .show();
 return true;
 }

4.運(yùn)行結(jié)果

這里寫圖片描述
點(diǎn)擊了對話框中的確定按鈕 
這里寫圖片描述

五、上面是消息對話框的實(shí)現(xiàn),再次緊接著學(xué)習(xí)確認(rèn)對話框

1.隨處可見的確認(rèn)對話框,用途:經(jīng)常用于一些征求用戶決定的操作,比如退出數(shù)據(jù)、刪除數(shù)據(jù)、確認(rèn)支付等。

2.直接貼代碼

package com.oldtogether.adapterdemo2;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.view.View.OnLongClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;

public class MainActivity4 extends ActionBarActivity implements OnItemClickListener, OnItemLongClickListener {
 // 創(chuàng)建數(shù)組,采用for循環(huán)進(jìn)行遍歷
 private int[] imageIds = new int[] { R.drawable.daxiang, R.drawable.maozi, R.drawable.nangua, R.drawable.nanguobq,
 R.drawable.tiaopi, R.drawable.xiaolian, R.drawable.xin, R.drawable.weixin, R.drawable.hongx,
 R.drawable.xm };
 private String[] titles = new String[] { "賣萌大象", "圣誕帽子", "憤怒南瓜", "難過表情", "調(diào)皮表情", "我倩的笑臉表情", "oldtogether愛心", "微信",
 "粉色少女心", "一代擼" };
 private String[] versions = new String[] { "版本:1.10", "版本:2.10", "版本:1.11", "版本:2.12", "版本:3.10", "版本:2.20",
 "版本:5.20", "版本:1.23", "版本:2.21", "版本:2.40", };
 private String[] sizes = new String[] { "大?。?2.01M", "大?。?2.02M", "大小:23.01M", "大?。?1.01M", "大?。?1.01M",
 "大?。?1.01M", "大?。?3.01M", "大小:33.01M", "大?。?3.01M", "大小:33.01M", };

 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.listview);

 // 1、過的ListView對象
 ListView lv = (ListView) findViewById(R.id.lv_play);
 // 2、數(shù)據(jù)源
 List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
 for (int i = 0; i < titles.length; i++) {
 Map<String, Object> map = new HashMap<String, Object>();
 map.put("logo", imageIds[i]);
 map.put("title", titles[i]);
 map.put("version", versions[i]);
 map.put("size", sizes[i]);
 list.add(map);
 }
 // 3、設(shè)置適配器
 MyAdapter3 adapter3 = new MyAdapter3(this);
 adapter3.setList(list);// 傳入數(shù)據(jù)
 // 4、關(guān)聯(lián)適配器
 lv.setAdapter(adapter3);
 // 5、為ListView設(shè)置事件監(jiān)聽器(一下兩個(gè)常用事件),讓主MainActivity2實(shí)現(xiàn)接口,并重寫方法
 lv.setOnItemClickListener(this);
 lv.setOnItemLongClickListener(this);
 }

 @Override
 public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
 /* 創(chuàng)建了一個(gè)意圖對象,調(diào)用setClass方法表明“在那個(gè)Activity中調(diào)用那個(gè)Activity”次意圖*/ 
 Intent intent = new Intent();
 intent.setClass(getApplicationContext(), DetailActivity.class);

 //獲得點(diǎn)擊行的數(shù)據(jù)
 HashMap <String,Object> itemMap= (HashMap<String,Object>) parent.getItemAtPosition(position);
 intent.putExtra("index", ""+position);//獲得編號
 intent.putExtra("title", ""+itemMap.get("title"));//獲得標(biāo)題
 startActivity(intent);
 }

 @Override
 public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
 //長按之確定對話框
 new AlertDialog.Builder(this)
 .setIcon(R.drawable.ic_launcher)
 .setTitle("你確定要退出嗎?")
 .setNegativeButton("取消", null)//null,說明不進(jìn)行自定義的任何操作,只是單純的關(guān)閉當(dāng)前對話框,又停在原界面
 .setPositiveButton("確定", new DialogInterface.OnClickListener() {

 @Override
 public void onClick(DialogInterface dialog, int which) {
 finish();//關(guān)閉當(dāng)前Activity
 }
 })
 .show();
 return true;
 }
}

3.運(yùn)行結(jié)果

這里寫圖片描述

4.補(bǔ)充:當(dāng)點(diǎn)擊取消是會停留在當(dāng)前Activity;當(dāng)點(diǎn)擊確定會退出當(dāng)前Activity,返回到模擬器主界面。

六、列表對話框

1.用途:以列表的形式展示數(shù)據(jù)、列表項(xiàng)可點(diǎn)擊、需要一個(gè)數(shù)組資源作為數(shù)據(jù)源。

2.核心方法:setItems();在準(zhǔn)備一個(gè)數(shù)組資源;

3.代碼如下:

package com.oldtogether.adapterdemo2;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.view.View.OnLongClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;

public class MainActivity4 extends ActionBarActivity implements OnItemClickListener, OnItemLongClickListener {
 // 創(chuàng)建數(shù)組,采用for循環(huán)進(jìn)行遍歷
 private int[] imageIds = new int[] { R.drawable.daxiang, R.drawable.maozi, R.drawable.nangua, R.drawable.nanguobq,
 R.drawable.tiaopi, R.drawable.xiaolian, R.drawable.xin, R.drawable.weixin, R.drawable.hongx,
 R.drawable.xm };
 private String[] titles = new String[] { "賣萌大象", "圣誕帽子", "憤怒南瓜", "難過表情", "調(diào)皮表情", "我倩的笑臉表情", "oldtogether愛心", "微信",
 "粉色少女心", "一代擼" };
 private String[] versions = new String[] { "版本:1.10", "版本:2.10", "版本:1.11", "版本:2.12", "版本:3.10", "版本:2.20",
 "版本:5.20", "版本:1.23", "版本:2.21", "版本:2.40", };
 private String[] sizes = new String[] { "大?。?2.01M", "大?。?2.02M", "大小:23.01M", "大?。?1.01M", "大小:41.01M",
 "大?。?1.01M", "大?。?3.01M", "大?。?3.01M", "大?。?3.01M", "大?。?3.01M", };

 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.listview);

 // 1、過的ListView對象
 ListView lv = (ListView) findViewById(R.id.lv_play);
 // 2、數(shù)據(jù)源
 List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
 for (int i = 0; i < titles.length; i++) {
 Map<String, Object> map = new HashMap<String, Object>();
 map.put("logo", imageIds[i]);
 map.put("title", titles[i]);
 map.put("version", versions[i]);
 map.put("size", sizes[i]);
 list.add(map);
 }
 // 3、設(shè)置適配器
 MyAdapter3 adapter3 = new MyAdapter3(this);
 adapter3.setList(list);// 傳入數(shù)據(jù)
 // 4、關(guān)聯(lián)適配器
 lv.setAdapter(adapter3);
 // 5、為ListView設(shè)置事件監(jiān)聽器(一下兩個(gè)常用事件),讓主MainActivity2實(shí)現(xiàn)接口,并重寫方法
 lv.setOnItemClickListener(this);
 lv.setOnItemLongClickListener(this);
 }

 @Override
 public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
 /* 創(chuàng)建了一個(gè)意圖對象,調(diào)用setClass方法表明“在那個(gè)Activity中調(diào)用那個(gè)Activity”次意圖*/ 
 Intent intent = new Intent();
 intent.setClass(getApplicationContext(), DetailActivity.class);

 //獲得點(diǎn)擊行的數(shù)據(jù)
 HashMap <String,Object> itemMap= (HashMap<String,Object>) parent.getItemAtPosition(position);
 intent.putExtra("index", ""+position);//獲得編號
 intent.putExtra("title", ""+itemMap.get("title"));//獲得標(biāo)題
 startActivity(intent);
 }

 @Override
 public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
 //列表對話框
 final String [] sites={"打印店","男生公寓","女生公寓","清真食堂","大眾食堂","圖書館","洗浴中心"};//設(shè)置為final(常量)的原因是可以穿透作用域
 new AlertDialog.Builder(this)
 .setTitle("蘭州城市學(xué)院培黎校區(qū)")
 .setItems(sites, new DialogInterface.OnClickListener() {

 @Override
 public void onClick(DialogInterface dialog, int which) {
 //參數(shù) which代表了消息對話框中的第幾項(xiàng)
 Toast.makeText(MainActivity4.this, "您選擇了"+sites[which], Toast.LENGTH_LONG).show();
 }
 })
 .setPositiveButton("確定", new DialogInterface.OnClickListener() {

 @Override
 public void onClick(DialogInterface dialog, int which) {
 //關(guān)閉的對話框的第二種方式,重寫一個(gè)沒有任何邏輯的空方法
 }
 })
 .show();
 return true;
 }
}

4.運(yùn)行結(jié)果

這里寫圖片描述
這里寫圖片描述

七、單選對話框

1.單選對話框,用途:需要用戶進(jìn)行單行選擇是進(jìn)行使用;核心方法:setSingleChoiceItems();

2.實(shí)現(xiàn)步驟

1).準(zhǔn)備一個(gè)數(shù)組資源(一般設(shè)置為常量數(shù)組,為了方便穿透作用域);

2).調(diào)用setSingleChioceItems()設(shè)置單選列表項(xiàng)。

3.代碼實(shí)現(xiàn)(直接在onItemLongClick寫Dialog相關(guān)代碼,其他代碼一樣)

//在主類中的全局變量1、暫存用戶所選的評分級別;(另外如果將此變量初始值設(shè)為0,直接點(diǎn)擊確定會出現(xiàn)1星評分,有bug)2、方便穿透作用域;
int selectedId = -1;
 @Override
 public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
 //長按之單選對話框
 final String [] stars={"1星","2星","2星","3星","4星","5星"};//設(shè)置為final(常量)的原因是可以穿透作用域
 new AlertDialog.Builder(this)
 .setTitle("大胸弟,來個(gè)5星的評分吧!")
 .setSingleChoiceItems(stars, -1, new DialogInterface.OnClickListener() {
 /*
 * 第一個(gè)參數(shù):所要顯示的資源數(shù)組;
 * 第二個(gè)參數(shù):在單選對話框列表中默認(rèn)情況先所選擇的行標(biāo)(這里設(shè)置為-1的原因是數(shù)組默認(rèn)情況先下標(biāo)從0開始,如果將此參設(shè)置為0,跳出單選對話框時(shí)默認(rèn)情況下會為1星評分,有bug);
 * 第三個(gè)參數(shù):點(diǎn)擊某行事件,自定義業(yè)務(wù)邏輯代碼(這里只用簡單的Toast來實(shí)現(xiàn));
 * 補(bǔ)充:dialog.dismiss()讓對話框消失。
 */
 @Override
 public void onClick(DialogInterface dialog, int which) {
 selectedId = which;//在用戶單選時(shí)起到一個(gè)暫存的作用,方便確定是被引用
 Toast.makeText(MainActivity4.this, "您當(dāng)前選擇了:"+stars[which], Toast.LENGTH_LONG).show();
 }
 })
 .setPositiveButton("確定", new DialogInterface.OnClickListener() {

 @Override
 public void onClick(DialogInterface dialog, int which) {
 Toast.makeText(MainActivity4.this, "您最終的決定是:"+stars[selectedId], Toast.LENGTH_LONG).show();
 }
 })
 .setNegativeButton("取消", new DialogInterface.OnClickListener() {

 @Override
 public void onClick(DialogInterface dialog, int which) {
 //空操作的方法
 }
 })
 .show();
 return true;
 }

4.運(yùn)行結(jié)果

這里寫圖片描述
這里寫圖片描述
這里寫圖片描述

八、多選對話框

1.多選對話框。用途:提供用戶進(jìn)行多項(xiàng)選擇;核心方法setMultiChoiceItems();(multi:英語中多的意思)

2.實(shí)現(xiàn)步驟

1).準(zhǔn)備一個(gè)數(shù)組資源;

2).調(diào)用setMultiChoiceItems()方法設(shè)置多選項(xiàng)列表;

3.代碼的實(shí)現(xiàn)(同理直接貼onItemLongClick()方法代碼)

ArrayList<Integer> choice = new ArrayList<>();//創(chuàng)建一個(gè)ArrayList用來保存在Dialog中所選擇的選項(xiàng),同理設(shè)置為全局變量為了穿透作用域
 @Override
 public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
 //長按之多選框?qū)υ捒?
 final String [] interests={"看書","打籃球","大lol","聽音樂","看電影","跑步"};//設(shè)置為final(常量)的原因是可以穿透作用域
 new AlertDialog.Builder(this)
 .setIcon(R.drawable.ic_launcher)
 .setTitle("你的愛好是什么?")
 /*
 * setMultiChoiceItems()方法中的三個(gè)參數(shù)
 * 第一個(gè)參數(shù):資源數(shù)組;
 * 第二個(gè)參數(shù):默認(rèn)情況下的初始值,這里因?yàn)槭嵌噙x,所以設(shè)置為boolean類型的數(shù)組;
 * 第三個(gè)參數(shù):多選框的點(diǎn)擊事件;
 * 
 */
 .setMultiChoiceItems(interests,
 new boolean []{false,false,false,false,false,false},
 new DialogInterface.OnMultiChoiceClickListener() {

  @Override
  public void onClick(DialogInterface dialog, int which, boolean isChecked) {
  /*
  * 第一個(gè)參數(shù):dialog對象;
  * 第二個(gè)參數(shù):多選對話框中用戶所選中的項(xiàng);
  * 第三個(gè)參數(shù):是否選中,true為選中,false為沒有選中
  * 
  */
  //選中則添加,后悔是時(shí)還可以remove掉
  if(isChecked){
  choice.add(which);
  }else{
  choice.remove(which);
  }
  Toast.makeText(MainActivity4.this, "您當(dāng)前的選擇是:"+choice.toString(), Toast.LENGTH_LONG).show();
  }
 })
 .setPositiveButton("確定", new DialogInterface.OnClickListener() {

 @Override
 public void onClick(DialogInterface dialog, int which) {
 Toast.makeText(MainActivity4.this, "您最終的決定是:"+choice.toString(), Toast.LENGTH_LONG).show();
 }
 })
 .setNegativeButton("取消", null)
 .show();
 return true;
 }
}

4.運(yùn)行結(jié)果

這里寫圖片描述
這里寫圖片描述

九、心得總結(jié)

1.提到對話框可以直接腦補(bǔ)出對話款的組成,和創(chuàng)建對話框的步驟;

2.在單選對話框中設(shè)置默認(rèn)初始值時(shí),“-1”的巧用,關(guān)鍵點(diǎn)是數(shù)組下標(biāo)從0開始,容易出現(xiàn)bug;

3.關(guān)閉對話框的兩種方法(在點(diǎn)擊負(fù)面按鈕時(shí))。第一種:在次方法中的第二個(gè)參數(shù)添加一個(gè)重操作即沒有任何邏輯代碼點(diǎn)擊事件即可;第二種:直接將第二個(gè)參數(shù)設(shè)置為null;

4.兩次經(jīng)典的穿透作用域(附帶魔法和物理傷害)。第一次在定義數(shù)據(jù)資源的時(shí)候,將數(shù)組資源用final修飾,讓其為常量,方便在其他方法中調(diào)用,即穿透作用域;第二次在創(chuàng)建單選和多選對話框時(shí),setSingleChioceItems()和setMultiChoiceItems()方法中有時(shí)候用戶可能會修改第一次的選擇,而將次選擇暫存在一個(gè)最外層類的成員變量中(這里的int selectedId和泛型ArrayList對象),方便在點(diǎn)擊確定按鈕即調(diào)用onClick方法是被利用,同樣再次穿透了作用域;

5.總之,日常生活中常見各種對話框,合理利用對話框會更好的實(shí)現(xiàn)界面與用戶之間的交流。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論