簡體   English   中英

如何使Intent.createChooser()創建的對話框可取消?

[英]How can I make dialog created by Intent.createChooser() cancelable?

如何使Intent.createChooser()創建的對話框可取消? 換句話說:當我在這個對話框之外點擊時,我需要取消它。

默認情況下,它的工作方式如下。 但是在某些設備上(如三星GT2)它不是(只有按下back按鈕才能取消此對話框)。

注意我在談論由Intent.createChooser()創建的對話框。 我沒有提到Dialog本身。

我同意Yul - 除非創建自己的選擇器,否則這是不可能的。 queryIntentActivities()可以為您提供列表的內容,您可以根據需要設計對話框。 下面是一個示例項目,使用queryIntentActivities()填充所有LAUNCHER活動的ListView ,然后使用該數據啟動單擊的條目。

就個人而言,由於大多數設備已經有這種行為,我不會打擾。 我一直在使用的Android,因為原來的設備,我沒有意識到,這個對話框是比對話框的取消按鈕(舊設備)和返回按鈕,直到讀了你的問題其他方式取消。 我懷疑您的用戶群會認為您的應用在選擇器行為方面的行為與其設備上的所有其他應用相同。

如果您使用startActivityForResult執行此操作,則可以獲取resultCode並測試它是否為RESULT_CANCELED

在“ 從活動中獲取結果”培訓文檔和“ 活動”本身的文檔中有關於此的更多信息。

在無恥地借用上述文檔中的示例的同時,我將向您展示我是如何做到的:

static final int PICK_CONTACT_REQUEST = 1;

private void pickContact() {
    Intent pickContactIntent = new Intent(Intent.ACTION_PICK, Uri.parse("content://contacts"));
    pickContactIntent.setType(Phone.CONTENT_TYPE);
    startActivityForResult(pickContactIntent, PICK_CONTACT_REQUEST);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode == RESULT_OK) {
        ...
    } else if (resultCode == RESULT_CANCELED){
        ...
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM