gpt4 book ai didi

android - 无法关闭android中的警报对话框

转载 作者:行者123 更新时间:2023-11-29 16:08:55 27 4
gpt4 key购买 nike

我在关闭自定义的警报对话框时遇到问题。也就是说,它有一个自定义 View ,其中包含两个按钮,一个用于数据库操作,另一个用于加载另一个 Activity 。我想在执行数据库操作后关闭对话框。但现在我无法声明任何命令,如 dialog.dismiss()cancel()finish() 请有人帮我解决这个问题。

我的类(class)

  @Override
protected boolean onTap(int index) {
OverlayItem item = mapOverlays.get(index);
final String title= item.getTitle();
final String snippet= item.getSnippet();
AlertDialog.Builder dialog = new AlertDialog.Builder(this.context);
if(title.equalsIgnoreCase("Your Location")){
dialog.setTitle(item.getTitle());
dialog.setMessage(item.getSnippet());
dialog.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
}
});
}
else if(title.equalsIgnoreCase("")){
LinearLayout layout = new LinearLayout(context);
layout.setOrientation(LinearLayout.VERTICAL);

final Button park_button = new Button(context);
park_button.setHint("Park here");
// park_button.setBackgroundResource();
layout.addView(park_button);
park_button.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
System.out.println("parkbutton:Clicked");
// Delete DB Values
int count = db.getDatasCount();
for(int i = 0;i<count;i++){
db.deleteValues(i);
}
//latitude & longtitude (string)
String latitude = String.valueOf(lat);
String longtitude = String.valueOf(lon);
Log.d("Insert: ", "Inserting ..");
db.addData(new Datas(latitude, longtitude));
// Toast.makeText(context, "Lat: " + lat + ", Lon: "+lon, Toast.LENGTH_SHORT).show();

// Reading DB Data
Log.d("Reading: ", "Reading all Values...");
List<Datas> datas = db.getAllDatas();

for (Datas dat : datas) {
String log = "Id: "+dat.getID()+" ,Latitude: " + dat.getlat() + " ,Longtitude: " + dat.getlon();
// Writing DB data to log
Log.d("DB Data: ", log);
}
Intent f = new Intent(context,MainTabActivity.class);
context.startActivity(f);
}
});


final Button know_more_button = new Button(context);
know_more_button.setHint("Know more");
// park_button.setBackgroundResource();
layout.addView(know_more_button);
know_more_button.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
SharedPreferences prefs = context.getSharedPreferences("myprefs", 0);
SharedPreferences.Editor editor =prefs.edit();
editor.putString("KEY_REFERENCE", snippet);
editor.commit();

Intent intent = new Intent(context, SinglePlaceActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
});

dialog.setView(layout);
dialog.setPositiveButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
}
dialog.show();
return true;
}

public void addOverlay(OverlayItem overlay) {
mapOverlays.add(overlay);
}

public void populateNow(){
this.populate();
}

}

最佳答案

首先,为了解释如何获得您想要的行为,我需要您将当前名为 dialog 的 AlertDialog.Builder 实例重命名为 builder。它没有准确命名,但可以帮助您理解我解决问题的方法。所以这一行:

AlertDialog.Builder dialog = new AlertDialog.Builder(this.context);

会变成:

AlertDialog.Builder builder = new AlertDialog.Builder(this.context);

从那里,您需要:

  1. 创建对 AlertDialog 实例的最终引用,当您调用 show() 时返回给您 - 并调用 dialog
  2. 接下来,将您设置的按钮点击监听器移到您在构建器上调用 show() 的位置下方。
  3. 最后,引用我让您创建的 dialog 变量,并对其调用 dismiss()。

见下面的代码:

// ... original code here (right before the end of your onTap main method)
final AlertDialog dialog = builder.show(); // this line used to be "dialog.show();"
know_more_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// ... original code here
dialog.dismiss();
}
});
// ... for the other button, do the same
return true;

关于android - 无法关闭android中的警报对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15200136/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com