如何在继续android之前获得对话框的结果

时间:2012-05-24 00:33:57

标签: android dialog

在我的活动的onCreate方法中,我调用了一个名为getLocProvider()的方法。它应该返回给我一个位置提供者。我让该方法显示一个警告对话框,这是我的代码:

private void getLocProvider(){
    ArrayList<String> providers = new ArrayList<String>();

    List<String> list = locManager.getProviders(true);
    for(int i=0; i<list.size(); i++){
        if(list.get(i).equalsIgnoreCase("gps")){
            providers.add("GPS");
        }
        else if(list.get(i).equalsIgnoreCase("network")){
            providers.add("Network");
        }
    }

    providers.add("Manual");

    final CharSequence[] items = providers.toArray(new CharSequence[providers.size()-1]);


    AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this);
    dialogBuilder.setTitle("Choose a way of finding your location:");
    dialogBuilder.setItems(items, new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int item) {
           //This is where I'm stuck
        }
    });
    AlertDialog alert = dialogBuilder.create();
    alert.show();}

使用监听器不会让我只是通过方法返回结果,所以有谁知道如何解决这个问题?在谷歌搜索中,人们建议制作另一个在完成对话时被触发的函数,但是我如何将该结果返回到我在onCreate方法中所做的事情呢?

谢谢, 扎克

1 个答案:

答案 0 :(得分:0)

通常,您会从应用程序的状态中分离UI的创建。我建议为UI创建一个“null”状态,然后在用户单击对话框后响应状态更改。这种模式在C#中很常见,但在Android中并不常见。此外,如果可以完成onCreate()必须在呈现UI之前返回。