0

在我的應用程序,當用戶沒有登錄我用 - ActivityA當用戶是日誌中 - ActivityB 。我在用戶沒有登錄的時候添加了一些標記,並且當用戶是時,我從JSON獲得了點數。如何識別哪個活動「調用」片段?如何識別我的地圖(谷歌地圖API V2)片段,其中活性通話片段

片段

@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然後檢查真/假,讓列表取決於布爾值。 有沒有更好的解決方案?

感謝

回答

1

如果(getActivity()的instanceof ActivityA)
做活動的東西
如果(getActivity()的instanceof ActivityB)
做b活動的東西

0

您可以製作片段的構造和活動通過一些布爾值。爲了更好地傳遞消息,您可以創建接口並在活動中實現它。使用接口實例在片段和活動的片段訪問函數中提供接口實例(即活動)以獲取其值。

0

您可以使用getActivity()方法從片段獲取活動。

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

然後你只需在你的片段中檢查需要的常量字符串。