android.app.AlertDialog#setOnKeyListener ( )源码实例Demo

下面列出了android.app.AlertDialog#setOnKeyListener ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: Yuan-WanAndroid   文件: VersionUpdateDialog.java
@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
    View view = LayoutInflater.from(getActivity()).inflate(R.layout.dialog_version_update, null);
    AlertDialog dialog = new AlertDialog.Builder(getActivity())
            .setView(view)
            .setCancelable(false)
            .create();
    dialog.setCanceledOnTouchOutside(false);// 设置点击屏幕Dialog不消失
    dialog.setOnKeyListener((dialog1, keyCode, event) -> keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0);
    TextView updateLater = view.findViewById(R.id.updateLaterTv);
    TextView updateNow = view.findViewById(R.id.updateNowTv);
    TextView content = view.findViewById(R.id.versionContentTv);
    content.setText(mContentText);
    updateLater.setOnClickListener(v -> dialog.dismiss());
    updateNow.setOnClickListener(v -> {
        dialog.dismiss();
        RxBus.getInstance().post(new UpdateEvent());
    });
    return dialog;
}
 
源代码2 项目: talkback   文件: KeyComboPreference.java
@Override
protected void showDialog(Bundle state) {
  super.showDialog(state);
  AlertDialog alertDialog = (AlertDialog) getDialog();
  if (alertDialog == null) {
    return;
  }

  if (getContext().getPackageManager().hasSystemFeature("android.hardware.touchscreen")) {
    /* Disable focus for buttons to prevent them being highlighted when keys are pressed. */
    alertDialog.getButton(DialogInterface.BUTTON_POSITIVE).setFocusable(false);
    alertDialog.getButton(DialogInterface.BUTTON_NEGATIVE).setFocusable(false);
  }
  alertDialog.setOnKeyListener(this);
  alertDialog.getButton(DialogInterface.BUTTON_POSITIVE).setText(R.string.save);
  alertDialog.getButton(DialogInterface.BUTTON_NEGATIVE).setText(android.R.string.cancel);
}
 
@Override
protected void showDialog(Bundle state) {
  super.showDialog(state);
  AlertDialog alertDialog = (AlertDialog) getDialog();
  if (alertDialog == null) {
    return;
  }

  View clear = alertDialog.findViewById(R.id.clear);
  clear.setOnClickListener(clearButtonClickListener);
  alertDialog
      .getButton(DialogInterface.BUTTON_POSITIVE)
      .setOnClickListener(okButtonClickListener);
  alertDialog.setOnKeyListener(this);

  Button okButton = alertDialog.getButton(DialogInterface.BUTTON_POSITIVE);
  okButton.setFocusableInTouchMode(true);
  okButton.requestFocus();

  setKeyEventSource(getKeyEventSourceForCurrentKeyComboModel());
}
 
源代码4 项目: fastnfitness   文件: DirectoryChooserDialog.java
public void chooseDirectory(String dir) {
    File dirFile = new File(dir);
    if (!dirFile.exists() || !dirFile.isDirectory()) {
        dir = m_sdcardDirectory;
    }

    try {
        dir = new File(dir).getCanonicalPath();
    } catch (IOException ioe) {
        return;
    }

    m_dir = dir;
    m_subdirs = getDirectories(dir);

    class DirectoryOnClickListener implements DialogInterface.OnClickListener {
        public void onClick(DialogInterface dialog, int item) {
            // Navigate into the sub-directory
            m_dir += "/" + ((AlertDialog) dialog).getListView().getAdapter().getItem(item);
            updateDirectory();
        }
    }

    AlertDialog.Builder dialogBuilder =
        createDirectoryChooserDialog(dir, m_subdirs, new DirectoryOnClickListener());

    dialogBuilder.setPositiveButton("OK", (dialog, which) -> {
        // Current directory chosen
        if (m_chosenDirectoryListener != null) {
            // Call registered listener supplied with the chosen directory
            m_chosenDirectoryListener.onChosenDir(m_dir);
        }
    }).setNegativeButton("Cancel", null);

    final AlertDialog dirsDialog = dialogBuilder.create();

    dirsDialog.setOnKeyListener((dialog, keyCode, event) -> {
        if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) {
            // Back button pressed
            if (m_dir.equals(m_sdcardDirectory)) {
                // The very top level directory, do nothing
                return false;
            } else {
                // Navigate back to an upper directory
                m_dir = new File(m_dir).getParent();
                updateDirectory();
            }

            return true;
        } else {
            return false;
        }
    });

    // Show directory chooser dialog
    dirsDialog.show();
}