如何识别哪个 activity 调用片段
How to recognize which activity call fragment
在我的应用程序中,我有一个带有地图的片段 (Google Maps API v2),我在用户 未登录 时使用它 - ActivityA当用户 登录时 - ActivityB。我在用户未登录时添加一些标记,当用户登录时,我从 JSON 中获取分数。如何识别activity"call"片段?
片段
@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 并根据布尔值获取列表。
有没有更好的解决办法?
谢谢
您可以在片段中创建一个构造函数并从 activity 传递一些布尔值。为了更好地传递消息,您可以创建接口并在 activity 中实现它。在片段中提供接口实例(即 activity),并从 activity 的片段访问函数中使用接口实例获取其值。
您可以使用 getActivity() 方法从片段中获取 activity。
如果您需要稳定且通用的解决方案,您可以编写实用程序 class 来确定片段中 getActivity() 方法返回的内容 activity。这是一个例子:
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;
}
}
然后您只需检查片段中所需的常量字符串。
if(getActivity() instanceof Activity)
做 activity 事情
if(getActivity() instanceof Activity)
做 activity 事情
在我的应用程序中,我有一个带有地图的片段 (Google Maps API v2),我在用户 未登录 时使用它 - ActivityA当用户 登录时 - ActivityB。我在用户未登录时添加一些标记,当用户登录时,我从 JSON 中获取分数。如何识别activity"call"片段?
片段
@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 并根据布尔值获取列表。 有没有更好的解决办法?
谢谢
您可以在片段中创建一个构造函数并从 activity 传递一些布尔值。为了更好地传递消息,您可以创建接口并在 activity 中实现它。在片段中提供接口实例(即 activity),并从 activity 的片段访问函数中使用接口实例获取其值。
您可以使用 getActivity() 方法从片段中获取 activity。
如果您需要稳定且通用的解决方案,您可以编写实用程序 class 来确定片段中 getActivity() 方法返回的内容 activity。这是一个例子:
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;
}
}
然后您只需检查片段中所需的常量字符串。
if(getActivity() instanceof Activity)
做 activity 事情
if(getActivity() instanceof Activity)
做 activity 事情