最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android中AlertDialog 點(diǎn)擊按鈕后不關(guān)閉對(duì)話框的功能

 更新時(shí)間:2017年04月12日 09:19:56   作者:SoftXJ  
本篇文章主要介紹了Android中AlertDialog 點(diǎn)擊按鈕后不關(guān)閉對(duì)話框的功能,非常具有實(shí)用價(jià)值,需要的朋友可以參考下

這里的問(wèn)題:當(dāng)我點(diǎn)擊確定按鈕,也就是 AlertDialog 里的 PositiveButton 的時(shí)候,我們需要判斷用戶是輸入是否符合我們的預(yù)期,如果不符合通常提示用戶重寫(xiě)輸入,且不關(guān)閉當(dāng)前的對(duì)話框,但上圖中點(diǎn)擊按鈕后會(huì)自動(dòng)的關(guān)閉窗口。

先看原來(lái)的這個(gè)是怎么寫(xiě)的:

private void openDialog() {
 LinearLayout linearLayout = (LinearLayout) LayoutInflater.from(getContext()).inflate(R.layout.change_password_dialog, null);
 final EditText originPasswordEt = (EditText) linearLayout.findViewById(R.id.origin_password);
 TextView forgetPassword = (TextView) linearLayout.findViewById(R.id.forget_password);

 final AlertDialog dialog = new AlertDialog.Builder(getContext())
  .setView(linearLayout)
  .setPositiveButton("確定", new DialogInterface.OnClickListener() {
   @Override
    public void onClick(DialogInterface dialog, int which) {
    String originPassword = originPasswordEt.getText().toString().trim();
     //傳到后臺(tái)
    }
  })
  .create();

 dialog.show();
}

雖然圖片里和代碼的并不是同一個(gè),但問(wèn)題是一樣的

setPositiveButton 方法中,即使我們沒(méi)有調(diào)用 dialog.dismiss()

但對(duì)話框還是會(huì)自動(dòng)的關(guān)閉,就算我們?cè)?onClick 里判斷輸入的內(nèi)容,錯(cuò)誤的提示也會(huì)在窗口關(guān)閉后才出現(xiàn)。

在 AlertDialog 提供的 API 中我也沒(méi)有找到可以設(shè)置的地方,如果有還請(qǐng)告知。而我解決這個(gè)問(wèn)題的辦法:

final AlertDialog dialog = new AlertDialog.Builder(getActivity())
  .setTitle(msg)
  .setView(layout)
  .setNegativeButton("取消", new DialogInterface.OnClickListener() {
   @Override
   public void onClick(DialogInterface dialog, int which) {
    dialog.dismiss();
   }
  })
  .setPositiveButton("submit",null)
  .setCancelable(true)
  .create();
dialog.show();

//為了避免點(diǎn)擊 positive 按鈕后直接關(guān)閉 dialog,把點(diǎn)擊事件拿出來(lái)設(shè)置
dialog.getButton(AlertDialog.BUTTON_POSITIVE)
  .setOnClickListener(new View.OnClickListener() {

 @Override
 public void onClick(View v) {
  Pattern pattern = Pattern.compile("[0-9]*");
  Matcher matcher = pattern.matcher(editText.getText());
  if (!matcher.matches()){
   showToast("請(qǐng)輸入正確的 ID");
   break;
  }
  dialog.dismiss();
  }
 }
});

setPositiveButton("submit",null) 監(jiān)聽(tīng)事件傳入 null

在調(diào)用 dialog.show() 后再設(shè)置 Button 的點(diǎn)擊事件,否則 getButton() 會(huì)返回空

這樣在我們手動(dòng)調(diào)用 dialog.dismiss() 之前,對(duì)話框是不會(huì)關(guān)閉的。

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

相關(guān)文章

最新評(píng)論

分宜县| 英吉沙县| 文山县| 金溪县| 安平县| 合作市| 尼玛县| 方正县| 嘉峪关市| 高密市| 兴仁县| 巍山| 淄博市| 西充县| 泸水县| 正定县| 响水县| 永泰县| 浮梁县| 潢川县| 邵东县| 黄梅县| 临泉县| 梅河口市| 隆昌县| 自贡市| 老河口市| 淮阳县| 沿河| 云南省| 宾阳县| 将乐县| 承德市| 屯昌县| 通州区| 甘肃省| 洛宁县| 贺兰县| 同江市| 宣恩县| 会理县|