Я создал в классе алертиддиолог. Я положил пользовательскую кнопку закрытия и еще одну кнопку для звонка. Я установил эти элементы в другом классе mapActivity.
На самом деле у меня две проблемы. Во-первых, когда я пытаюсь закрыть свой алертиддиолог с помощью кнопки закрытия, ничего не происходит, во-вторых, когда я пытаюсь позвонить, я получаю ошибку исключения IndexOutofBound.
Вот мой код:
Context mContext = getApplicationContext();
LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.alertmenu,
(ViewGroup) findViewById(R.id.widget0));
ImageButton alertimagebutton = (ImageButton) layout.findViewById(R.id.closebutton);
alertimagebutton.setImageResource(R.drawable.close_button);
Button alertphone = (Button) layout.findViewById(R.id.widget35);
alertphone.setText(phonevalue.get(i));
//call
alertphone.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
try {
System.out.println(phonevalue.get(i));
Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setData(Uri.parse("tel:"+phonevalue.get(i)));
startActivity(callIntent);
} catch (Exception e) {
System.out.println("Couldn't make a call= "+e);
}
}
});
//close
alertimagebutton.setOnClickListener(new View.OnClickListener(){
public void onClick(View v) {
System.out.println("closed"); // logcat shows this message
MyClass.alertDialog.dismiss();
}
});
MyClass.alertDialog = builder.create();
mapOverlays.add(MyClass);
Примечание: я сделал то же самое для списка активности, и он работает нормально. Когда пользователь нажимает на детализированный вид, он показывает моего alerttdiaolog и может закрыть и сделать звонок. Но я создал своего алертиаддиолога в той же деятельности, а не в другом классе.
Примечание 2. Я делаю это, когда пользователь нажимает на изображение на карте, и я хочу показать подробное представление об этом человеке. Сначала я создал воздушный шар, а второй пользователь щелкает эту кнопку, он показывает подробный вид изображений.
РЕДАКТИРОВАТЬ: Я решил проблему телефонного звонка. Я объявил другую строковую переменную после того, как установил свой phoneno:
Button alertphone = (Button) layout.findViewById(R.id.widget35);
alertphone.setText(phonevalue.get(i));
final String phone = phonevalue.get(i);
И я изменил позывной:
callIntent.setData(Uri.parse("tel:"+phone));
Теперь все работает нормально, но я не могу закрыть диалоговое окно.