我還沒有爲此編寫任何代碼,但我一直在研究如何在自定義Web瀏覽器中實現書籤。從我讀過的,我相信要走的路是向用戶顯示一個對話框(我看到this article關於如何從對話框返回值),我認爲這是一個書籤的ListView ...我是誠實地堅持一些非常簡單的事情 - 如何將書籤呈現給用戶並選擇一個。用於選擇書籤的對話框的最佳實踐
所以,在這裏我的問題:
- 什麼是「最佳實踐」爲顯示列表給用戶,並具有 他選擇一個?
- 在對話框「最佳實踐」中這樣做?
謝謝。
我還沒有爲此編寫任何代碼,但我一直在研究如何在自定義Web瀏覽器中實現書籤。從我讀過的,我相信要走的路是向用戶顯示一個對話框(我看到this article關於如何從對話框返回值),我認爲這是一個書籤的ListView ...我是誠實地堅持一些非常簡單的事情 - 如何將書籤呈現給用戶並選擇一個。用於選擇書籤的對話框的最佳實踐
所以,在這裏我的問題:
謝謝。
執行此操作的經典方法(3.0之前)是使用簡單的對話框,使用當前的「活動」進行管理。最簡單的方法是使用AlertDialogBuilder構建對話框,參見here,在中間的「添加列表」部分。這樣你就可以得到一個帶有列表的對話框,用戶可以從列表中選擇一個條目。
但是,現在你應該使用DialogFragments,而不是新的Fragment框架。您可以使用官方兼容性庫在較舊的Android版本上創建片段。在DialogFragment中,如果您重寫onCreateView(...)回調函數,則可以顯示所需的任何UI佈局,也可以使用「onCreateDialog(...)」回調函數定義外觀和行爲(可以使用AlertDialogBuilder這裏也)。有關示例,請參閱鏈接。
基於DialogFragment的解決方案更具自包含性,您可以從應用程序中的任何位置輕鬆調用/顯示它。
是的,我認爲基於單選列表的對話可以被認爲是這種情況下的「最佳實踐」。但是,基於DialogFragment的解決方案的另一個優點是,您不必強制以Dialog樣式顯示它,如果這是您想要的,也可以將它作爲標準片段嵌入到Activity的佈局中。
我個人會使用另一個活動來顯示書籤,而不是使用對話框。用戶可以保存大量的書籤,並且我認爲這不是最好的對話方式。
我會做另一個活動,它擴展ListView並在列表中顯示書籤,甚至更好地使用書籤縮略圖的gridview。然後通過點擊書籤將返回到主要活動,使用所選書籤刷新瀏覽器。
除非您想創建一個longpressclick或上下文菜單來顯示刪除/編輯/ ..書籤的對話框,否則無需使用對話框。
alertdialog.builder是構建對話框的最快最容易的方法。作爲與alertdialog.builder建立對話的另一個技巧。構建器有一個setview來給它任何你想要的對話框視圖,這個視圖基本上可以是一個linearLayout,它已經失去了更多的視圖,創建了一個複雜的對話視圖。
final AlertDialog.Builder ad = new AlertDialog.Builder(this);
ad.setTitle(getResources().getString(R.string.dialog_title));
ad.setView(dialogLayout);
最好是顯示一個列表對話框,並根據用戶選擇導航到瀏覽器或webview。
您可以使用下面的代碼來顯示一個對話框,用戶::
String[] yourarraylist = new String[]{"A","B","C","D","E","F","G"};
AlertDialog.Builder builder = new AlertDialog.Builder(YourActivity.this);
builder.setTitle("title");
builder.setSingleChoiceItems(yourarraylist, -1, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int item) {
Toast.makeText(getApplicationContext(), yourarraylist[item], Toast.LENGTH_SHORT).show();
//launch web browser or webview
alert.dismiss();
}
});
alert = builder.create();
alert.show();
可以啓動網絡瀏覽器,如下::
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com"));
startActivity(browserIntent);
同時適用於網頁流量,你可以打開網址參考我的博客LINK