0

在我的活动的 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 方法中所做的事情?

谢谢,扎克

4

1 回答 1

0

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

于 2012-05-24T00:40:31.090 回答