2012-04-12 67 views
1

我還沒有爲此編寫任何代碼,但我一直在研究如何在自定義Web瀏覽器中實現書籤。從我讀過的,我相信要走的路是向用戶顯示一個對話框(我看到this article關於如何從對話框返回值),我認爲這是一個書籤的ListView ...我是誠實地堅持一些非常簡單的事情 - 如何將書籤呈現給用戶並選擇一個。用於選擇書籤的對話框的最佳實踐

所以,在這裏我的問題:

  1. 什麼是「最佳實踐」爲顯示列表給用戶,並具有 他選擇一個?
  2. 在對話框「最佳實踐」中這樣做?

謝謝。

回答

3

執行此操作的經典方法(3.0之前)是使用簡單的對話框,使用當前的「活動」進行管理。最簡單的方法是使用AlertDialogBu​​ilder構建對話框,參見here,在中間的「添加列表」部分。這樣你就可以得到一個帶有列表的對話框,用戶可以從列表中選擇一個條目。

但是,現在你應該使用DialogFragments,而不是新的Fragment框架。您可以使用官方兼容性庫在較舊的Android版本上創建片段。在DialogFragment中,如果您重寫onCreateView(...)回調函數,則可以顯示所需的任何UI佈局,也可以使用「onCreateDialog(...)」回調函數定義外觀和行爲(可以使用AlertDialogBu​​ilder這裏也)。有關示例,請參閱鏈接。

基於DialogFragment的解決方案更具自包含性,您可以從應用程序中的任何位置輕鬆調用/顯示它。

是的,我認爲基於單選列表的對話可以被認爲是這種情況下的「最佳實踐」。但是,基於DialogFragment的解決方案的另一個優點是,您不必強制以Dialog樣式顯示它,如果這是您想要的,也可以將它作爲標準片段嵌入到Activity的佈局中。

2

我個人會使用另一個活動來顯示書籤,而不是使用對話框。用戶可以保存大量的書籤,並且我認爲這不是最好的對話方式。

我會做另一個活動,它擴展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); 
3

最好是顯示一個列表對話框,並根據用戶選擇導航到瀏覽器或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