1

我还没有为此编写任何代码,但我一直在研究如何在我的自定义网络浏览器中实现书签。从我读过的内容来看,我相信要走的路是向用户展示一个对话框(我看到了这篇关于如何从对话框返回值的文章),我认为其中包含一个用于书签的 ListView ......我'老实说,我坚持做一些非常简单的事情——如何向用户展示书签并选择一个。

所以,我的问题在哪里:

  1. 向用户显示列表并让他选择一个列表的“最佳实践”是什么?
  2. 是在对话框“最佳实践”中这样做吗?

谢谢。

4

3 回答 3

3

执行此操作的经典方法(3.0 之前)是使用简单的对话框,您可以使用当前的活动进行管理。最简单的方法是使用 AlertDialogBu​​ilder 构建对话框,请参见此处,在中间的“添加列表”部分。这样,您将获得一个带有列表的对话框,并且用户可以从该列表中选择一个条目。

但是,如今,您应该使用DialogFragments和(不是这样)新的 Fragment 框架。您可以使用官方兼容性库使片段在较旧的 Android 版本上工作。在 DialogFragment 中,如果您覆盖 onCreateView(...) 回调,您可以显示任何您想要的 UI 布局,或者您可以使用“onCreateDialog(...)”回调定义外观和行为(您可以使用 AlertDialogBu​​ilder这里也)。有关示例,请参见链接。

基于 DialogFragment 的解决方案更加独立,您可以从应用程序的任何位置轻松调用/显示它。

是的,我确实认为在这种情况下,可以将基于单选列表的对话框视为“最佳实践”。但是,基于 DialogFragment 的解决方案的另一个优点是,您不必被迫以 Dialog 样式显示它,如果您想要的话,您也可以将它作为标准片段嵌入到 Activity 的布局中。

于 2012-04-18T19:03:26.343 回答
3

最好的方法是显示一个带有列表的对话框,并根据用户选择导航到浏览器或 web 视图。

您可以使用以下代码向用户显示一个对话框::

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);

另外,要在 webview 中打开 url,您可以在此LINK上参考我的博客

于 2012-04-25T03:24:03.980 回答
2

我个人会使用另一个活动来显示书签,而不是使用对话框。用户可以保存大量书签,并且我认为对话框不是最好的方法。

我会做另一个扩展 ListView 的活动,并在列表上显示书签,甚至更好的是带有书签缩略图的 gridview。然后通过单击书签将返回主活动,使用所选书签刷新浏览器。

不需要对话框,除非您喜欢创建长按或上下文菜单来显示用于删除/编辑/.. 书签的对话框。

alertdialog.builder 是构建对话框的最快和最简单的方法。作为使用 alertdialog.builder 构建对话框的另一个技巧。构建器有一个 setview 可以给它任何你想要的对话框视图,这个视图基本上可以是一个线性布局,其中已经丢失了更多视图,创建了一个复杂的对话框视图。

final AlertDialog.Builder ad = new AlertDialog.Builder(this);
ad.setTitle(getResources().getString(R.string.dialog_title));
ad.setView(dialogLayout);
于 2012-04-23T12:55:19.057 回答