0

参考下图。我想在用户单击“查看地图”按钮时更新地图。但是,由于这是可扩展列表视图的一部分,它在它自己的类中,而地图本身在另一个片段活动中。

有什么方法可以听到按钮单击并从另一个活动相应地更新地图?

谢谢!

在此处输入图像描述

这是我到目前为止所拥有的。我尝试通过获取参数

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));
    }
...
}

ExpandableListElement 活动:

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;
        }
    });
...
}
4

1 回答 1

0

你可以从你的活动课上处理它。假设地图在一个片段中,而按钮在另一个片段中。它们都由同一活动“托管”。

让您的活动有这样的方法,并确保它是公开的:

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(argument) 来更新您的地图:

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...
    }
}

此策略也可用于列表

于 2013-08-15T15:32:07.667 回答