选择书签的对话框的最佳实践

时间:2012-04-12 21:27:13

标签: android

我还没有为此编写任何代码,但我一直在研究如何在自定义Web浏览器中实现书签。根据我的阅读,我相信要走的路是向用户显示一个对话框(我看到this article如何从对话框中返回值),我认为它包含了书签的ListView。老实说,我坚持一些非常简单的事情 - 如何向用户展示书签并选择一个。

所以,我的问题在哪里:

  1. 用于向用户显示列表和拥有列表的“最佳实践” 他选一个?
  2. 是在对话“最佳实践”中这样做的吗?
  3. 感谢。

3 个答案:

答案 0 :(得分:3)

执行此操作(3.0之前版本)的经典方法是使用您使用当前活动管理的简单对话框。最简单的方法是使用AlertDialogBu​​ilder构建对话框,请参阅中间的here,“添加列表”部分。通过这种方式,您可以获得带有列表的Dialog,用户可以从该列表中选择一个条目。

现在,你应该使用DialogFragments和(不是这样的)新的Fragment框架。您可以使用官方兼容性库使片段适用于较旧的Android版本。在DialogFragment中,如果覆盖onCreateView(...)回调,可以显示所需的任何UI布局,或者可以使用“onCreateDialog(...)”回调定义外观和行为(可以使用AlertDialogBu​​ilder这里也)。请参阅链接以获取示例。

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

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

答案 1 :(得分:3)

最好是显示带有列表的对话框,用户选择后导航到浏览器或webview。

您可以使用以下代码向user ::

显示一个对话框
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中打开网址,您可以通过此LINK

推荐我的博客

答案 2 :(得分:2)

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

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

除非你想创建一个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);