Можно ли будет использовать активы и фрагменты с bottomNavigation? - PullRequest
0 голосов
/ 14 февраля 2019

Снимок экрана приложения

Я пытаюсь реализовать MapView на вкладке в моем приложении, но возникают проблемы с реализацией его как фрагмента, а не действия.Мне удалось отобразить местоположение пользователя, но возникли проблемы, так как метод onLocationChanged, похоже, не вызывается.Не проще ли реализовать в качестве действия одну из вкладок и использовать фрагменты для других?

public class LocationFragment extends Fragment implements
    OnMapReadyCallback,
    GoogleApiClient.ConnectionCallbacks,
    GoogleApiClient.OnConnectionFailedListener,
    LocationListener {


private GoogleMap mGoogleMap;
private MapView mMapView;
private View mView;
private GoogleApiClient apiClient;
private LocationRequest locationRequest;
private LocationManager locationManager;
private Location lastKnowLocation;
private FragmentActivity myContext;
private Marker currentLocationMarker;
final int userRequestCode = 1;

public LocationFragment() {

}

@Overide
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.M){
        checkUserLocationPermission();
    }

}

 @Overide
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    mView = inflater.inflate(R.layout.fragment_location, container, false);
    return mView;
}

 @Overide
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);

    mMapView = mView.findViewById(R.id.map);
    if (mMapView != null) {
        mMapView.onCreate(null);
        mMapView.onResume();
        mMapView.getMapAsync(this);
    }
}

 @Overide
public void onLocationChanged(Location location) {

    lastKnowLocation = location;
    if (currentLocationMarker != null) {
        currentLocationMarker.remove();
    }


    LatLng currentLatLng = new LatLng(location.getLatitude(), location.getLongitude());

    MarkerOptions markerOptions = new MarkerOptions();
    markerOptions.position(currentLatLng);
    markerOptions.title("Current Location");
    markerOptions.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_BLUE));
    currentLocationMarker = mGoogleMap.addMarker(markerOptions);

    mGoogleMap.moveCamera(CameraUpdateFactory.newLatLng(currentLatLng));
    mGoogleMap.animateCamera(CameraUpdateFactory.zoomBy(16));

    locationManager = (LocationManager) getActivity().getSystemService(Context.LOCATION_SERVICE);

    if (apiClient != null) {

        if (ActivityCompat.checkSelfPermission(getContext(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(getContext(), Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {

            locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, (android.location.LocationListener) LocationFragment.this);
        }
    }

}


 @Overide
public void onConnected(@Nullable Bundle bundle) {

    locationRequest = new LocationRequest();
    locationRequest.setInterval(510);
    locationRequest.setFastestInterval(510);
    locationRequest.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY);

    locationManager = (LocationManager) getActivity().getSystemService(Context.LOCATION_SERVICE);

    if (ContextCompat.checkSelfPermission(getContext(), Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {

        locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,0,0, (android.location.LocationListener) LocationFragment.this);

    }
}

1 Ответ

0 голосов
/ 14 февраля 2019

Вам необходимо иметь одно задание , которое включает в себя макет кадра , который будет использоваться в качестве этапа для подъема 5 различных фрагментов .Если вы не получили его, дайте мне знать, чтобы опубликовать код.

Обновление :

public class MapFragment extends Fragment {

}

public static MapFragment newInstance(int i) {
    MapFragment f = new MapFragment();
    return f;
}

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
                         @Nullable Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.map_fragment, container, false);

    return view;
}

@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...