用于选择书签的对话框的最佳做法



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

所以,我的问题在哪里:

    向用户
  1. 显示列表并拥有的"最佳实践"是什么他选一个?
  2. 在对话框中执行此操作是"最佳实践"吗?

谢谢。

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

然而,现在你应该使用DialogFragments,以及(不是这样)新的Fragment框架。您可以使用官方兼容性库使片段在较旧的 Android 版本上运行。在 DialogFragment 中,如果重写 onCreateView(...) 回调,则可以显示所需的任何 UI 布局,也可以使用"onCreateDialog(...)"回调来定义外观和行为(您也可以在此处使用 AlertDialogBuilder)。有关示例,请参阅链接。

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

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

最好是显示带有列表的对话框,并在用户选择时导航到浏览器或 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,您可以在此链接中参考我的博客

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

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

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

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

final AlertDialog.Builder ad = new AlertDialog.Builder(this);
ad.setTitle(getResources().getString(R.string.dialog_title));
ad.setView(dialogLayout);

最新更新