Android 将值发送到另一个活动并将其保存到listview中
我的MapsActivity中有几个标记,每次单击其中一个标记时,都会显示一个alertdialog,该alertdialog包含有关该标记的一些信息和三个按钮Cancel(取消),例如,当我单击要发送给另一个活动的Like(类似)按钮时Go(转到)表示该标记的值。 标记值从json中检索,如下所示: 最终int位置=int marker.getTag 我如何在没有意图的情况下将职位发送到我的其他活动 下面是java:Android 将值发送到另一个活动并将其保存到listview中,android,android-activity,Android,Android Activity,我的MapsActivity中有几个标记,每次单击其中一个标记时,都会显示一个alertdialog,该alertdialog包含有关该标记的一些信息和三个按钮Cancel(取消),例如,当我单击要发送给另一个活动的Like(类似)按钮时Go(转到)表示该标记的值。 标记值从json中检索,如下所示: 最终int位置=int marker.getTag 我如何在没有意图的情况下将职位发送到我的其他活动 下面是java: mMap.setOnMarkerClickListener(new Goog
mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
@Override
public boolean onMarkerClick(final Marker marker) {
final int position = (int) marker.getTag();
final String latRepr = listaOportunidades.get(position).get("Coord_LAT");
final String lngRepr = listaOportunidades.get(position).get("Coord_LONG");
new AlertDialog.Builder(MapsActivity.this)
.setTitle(listaOportunidades.get(position).get("Designacao"))
.setMessage(" • Endereço: " + listaOportunidades.get(position).get("Morada") + "\n" + " • Telefone: " + listaOportunidades.get(position).get("Telefone")
+ "\n" + " • Telemóvel: " + listaOportunidades.get(position).get("Telemovel") + "\n" + " • Email: " + listaOportunidades.get(position).get("Email"))
.setIcon(R.drawable.iconmarker)
.setPositiveButton("Ir", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
new GetDirecoes().execute(latRepr, lngRepr);
mBottomSheetBehavior.setPeekHeight(250);
}
})
.setNeutralButton("Cancelar", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialogInterface, int which) {
// do nothing
}
})
.setNegativeButton("Like", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
int position = (int) marker.getTag();
Toast.makeText(getApplicationContext(), "Guardado nos favoritos", Toast.LENGTH_LONG).show();
}
})
.show();
return false;
}
});
在活动之间创建一个接口。在MapsActivity中,创建一个界面:
public interface OnMarkerSelected() {
void onSelected(int position);
}
声明字段:
OnMarkerSelected listener;
在类似的对话框中,单击执行以下操作:
if (listener != null) {
listener.onSelected(position);
}
然后转到其他活动并在Markerselected上实现您的接口
然后,您必须在SelectedInt position上实现方法,在这里您将有权访问该职位
这不是一个完整的解决方案,可能还缺少一些东西,但它应该给你正确的想法,让你走上解决问题的正确道路
希望有帮助。您可以使用首选项或某些数据库(如SQLite或Realm)保存喜爱的标记,但我建议在这种情况下使用首选项。下面是一个您可以实现的示例: 要访问您的首选项,您必须始终调用相同的字符串,因此,为了防止错误做法,请创建您需要的字符串资源:
<string name="MyPreferencesString">preferencesOfMyApp</string>
<string name="MyPreferencesMarkers">favoriteMarkers</string>
启动onCrete方法中的首选项:
在这种情况下,要添加或修改首选项,我们只保存int,但您可以放置更多值类型:
SharedPreferences.Editor editor=preferences.edit();
editor.putInt(getString(R.string.MyPreferencesMarkers),position);
editor.commit(); //or editor.apply();
要从首选项中获取值,请执行以下操作:
int anotherPositionVariable = preferences.getInt(getString(R.string.MyPreferencesMarkers),0);
提示:在访问任何值之前刷新首选对象,方法与初始化对象的方法相同
有关首选项的文档:
SharedPreferences.Editor editor=preferences.edit();
editor.putInt(getString(R.string.MyPreferencesMarkers),position);
editor.commit(); //or editor.apply();
int anotherPositionVariable = preferences.getInt(getString(R.string.MyPreferencesMarkers),0);