Android 有没有办法处理不同活动中的按钮?
参考下图。我想在用户单击“查看地图”按钮时更新地图。但是,由于这是可扩展列表视图的一部分,因此它位于自己的类中,而映射本身位于另一个片段活动中 有没有办法聆听按钮的点击并从其他活动中相应地更新地图 谢谢 这是我到目前为止所拥有的。我试着通过Android 有没有办法处理不同活动中的按钮?,android,google-maps,Android,Google Maps,参考下图。我想在用户单击“查看地图”按钮时更新地图。但是,由于这是可扩展列表视图的一部分,因此它位于自己的类中,而映射本身位于另一个片段活动中 有没有办法聆听按钮的点击并从其他活动中相应地更新地图 谢谢 这是我到目前为止所拥有的。我试着通过 ExpandableListElement.polyLinePass 但它没有给我任何回报,所以我无法更新地图。还有一个问题,当值像多段线一样更改时,贴图是否会自动更新,还是需要重新设置贴图 地图显示活动: public class OfflineVi
ExpandableListElement.polyLinePass
但它没有给我任何回报,所以我无法更新地图。还有一个问题,当值像多段线一样更改时,贴图是否会自动更新,还是需要重新设置贴图
地图显示活动:
public class OfflineViewer extends FragmentActivity {
private void setUpMap() {
List<LatLng> listTemp = util.decodePoly(ExpandableListElement.polyLinePass);
for(int l=0;l<listTemp.size() - 1;l++){
list.add(listTemp.get(l));
if(l==0) {
}
}
int listSize = list.size();
//get polyline from expandable list elements
for (int i = 0; i < list.size() - 1; i++) {
LatLng src = list.get(i);
LatLng dest = list.get(i + 1);
Polyline line = mMap.addPolyline(new PolylineOptions() //mMap is the Map Object
.add(new LatLng(src.latitude, src.longitude),
new LatLng(dest.latitude,dest.longitude))
.width(5).color(Color.BLUE).geodesic(true));
}
...
}
public class ExpandableListElement extends RelativeLayout {
public ExpandableListElement(Context context, String routeName, String mode, String dist, String routeId, String start, String end, final String polyLine) {
super(context);
mContext = context;
setTextViewElements(routeName, mode, dist, routeId, start, end, polyLine);
Button randButton = new Button(mContext);
randButton.setText("View Map");
randButton.setId(mIdPool);
randButton.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
polyLinePass = polyLine;
}
});
...
}
您可以从活动类处理该问题。假设地图在一个片段中,按钮在另一个片段中。它们都由同一活动“主持” 让您的活动有这样一种方法,并确保它是公开的:
class MyActivity extends Activity {
private Fragment fragment1; //the frag with the button
private Fragment fragment2; //the frag with the map
public void updateMap(String argument) {
if(fragment2 != null)
fragment2.update(argument);
}
}
然后从带有按钮(fragment1)的片段中,调用((MyActivity)getActivity())。updateMap(参数)以更新映射:
class Fragment1 extends Fragment implements OnClickListener{
// this is called on button click
void onClick(...) {
((MyActivity) getActivity()).updateMap(argument)
}
}
您的第二个片段需要一个公共方法来启动映射:
class Fragment1 extends Fragment implements OnClickListener{
public void updateMap(String arguments) {
// update map...
}
}
这个策略也可以在列表中使用Hi@danijioo我尝试了你的建议,但在OnClick方法中我一直有这个错误<代码>类型new View的getActivity()方法未定义。OnClickListener(){}我使用,
((MyActivity)mContext.updateMap(mArgument)创建了work代码>谢谢!