如何识别哪个活动调用片段

时间:2016-08-25 12:26:08

标签: android android-fragments google-maps-markers google-maps-api-2

在我的应用中,我有一个带有地图的片段(Google Maps API v2),当用户无法登录时,我会使用这些片段 - ActivityA以及当用户登录时 - ActivityB。我在用户未登录时添加了一些标记,当用户使用时,我从JSON中获取点数。如何识别哪个活动“调用”片段?

片段

@Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        mapView.onCreate(savedInstanceState);

        mapView.getMapAsync(new OnMapReadyCallback() {
            @Override
            public void onMapReady(GoogleMap mMap) {
                googleMap = mMap;

                //when the user is not log in
                for (int i = 0; i < result.size(); i++) {
                    MarkerOptions marker = new MarkerOptions().position(new LatLng(result.get(i).getLat(), result.get(i).getLng())).title(result.get(i).getTitle());
                    googleMap.addMarker(marker);
                }

                //add here code when user is log in

                //show image of the point in dialog
                googleMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
                    @Override
                    public void onInfoWindowClick(Marker marker) {
                        Log.i("MARKER", marker.getPosition().toString());
                        showAlertDialog(marker);
                    }
                });
            }
        });
    }

我的想法是设置一些布尔值,如 userIsLogin ,然后检查true / false并获取List取决于bool值。 有没有更好的解决方案?

由于

4 个答案:

答案 0 :(得分:1)

如果需要稳定且通用的解决方案,可以编写实用程序类来确定片段中getActivity()方法返回的活动。这是一个例子:

public class ActivityRecognizer {
    public static final String MY_ACTIVITY = "my_activity";

    public String getActivityType(Activity activity) {
        if (activity == null) return NONE;
        else if (activity instanceof MyActivity) return MY_ACTIVITY;
    }
}

然后你只需检查片段中所需的常量字符串。

答案 1 :(得分:1)

if(getActivity()instanceof ActivityA)
做活动的东西
if(getActivity()instanceof ActivityB)
做活动b的东西

答案 2 :(得分:0)

您可以在fragment中创建构造函数并从activity传递一些布尔值。为了更好地传递消息,您可以创建接口并在活动中实现它。在片段中提供接口实例(即活动),并使用接口实例从活动的片段访问函数中获取其值。

答案 3 :(得分:0)

您可以使用getActivity()方法从片段中获取活动。

相关问题