在我的活动的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方法中所做的事情呢?
谢谢, 扎克
答案 0 :(得分:0)
通常,您会从应用程序的状态中分离UI的创建。我建议为UI创建一个“null”状态,然后在用户单击对话框后响应状态更改。这种模式在C#中很常见,但在Android中并不常见。此外,如果可以完成onCreate()
必须在呈现UI之前返回。