[Обновление: спасибо предложению Craigy ниже, я немного очистил свой код и добавил «final» перед строкой в onTap, и все отлично работает!]Android MapView - расширение OverlayItem для хранения URL-адреса для доступа в onTap
Я пытаюсь сохранить URL-адрес (вместе с заголовком и фрагментом) в пользовательском элементе OverlayItem в моем представлении. Когда пользователь набирает OverlayItem (в моем случае, NewsMapItem), я хочу, чтобы в диалоговом окне появился заголовок и описание. Ниже приведены кнопки «Открыть» и «Отклонить». Когда пользователь нажимает кнопку «Открыть», я хотел бы получить доступ к URL-адресу, хранящемуся в NewsMapItem, и загрузить его в WebView.
Пожалуйста, смотрите соответствующие фрагменты кода ниже:
NewsMapItem - где я хотел бы добавить в ссылке (в дополнение к точке, название и фрагмент кода предоставляется по классу OverlayItem по умолчанию).
private class NewsMapItem extends OverlayItem {
private String mLink;
public NewsMapItem(GeoPoint point, String title, String snippet, String mLink) {
super(point, title, snippet);
this.mLink = mLink;
}
public String getLink() {
return mLink;
}
}
OnTap переопределения (в моем классе, простирающийся ItemizedOverlay):
@Override
protected boolean onTap(int index) {
NewsMapItem item = overlays.get(index);
AlertDialog.Builder dialog = new AlertDialog.Builder(mContext);
dialog.setTitle(item.getTitle());
dialog.setMessage(item.getSnippet());
// Added the line below...
final String url = item.getLink();
dialog.setCancelable(true);
dialog.setPositiveButton(R.string.mapview_open, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// Removed this call...
// String url = item.getLink();
Intent showContent = new Intent(getApplicationContext(), JJGWebViewActivity.class);
showContent.setData(Uri.parse(url));
startActivity(showContent);
}
});
dialog.setNegativeButton(R.string.mapview_dismiss, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
dialog.show();
return true;
}
В пункте аксессоры подчеркнуты красный цвет, и Eclipse, говорит мне: «Не может относиться к неконечному переменному элементу внутри внутреннего класса определенных другим способом ».
Любая помощь, или есть лучший способ сделать то, что я пытаюсь?
Для простоты я вообще не мог отобразить фрагмент и сохранить URL-адрес там, но я хотел бы показать заголовок и описание в диалоговом окне, чтобы пользователь мог выбрать, открывать или не открывать рассказ легче.
Точно, что мне нужно было сделать. Благодаря! – geerlingguy