gpt4 book ai didi

android - 是否可以将 Activity 和 fragment 与底部导航一起使用?

转载 作者:行者123 更新时间:2023-11-29 00:56:01 25 4
gpt4 key购买 nike

Screenshot of the app

我正在尝试在我的应用程序的选项卡上实现 MapView,但在将其实现为 fragment 而不是 Activity 时遇到了问题。我设法显示了用户的位置,但遇到了问题,因为似乎没有调用 onLocationChanged 方法。将选项卡中的一个作为 Activity 实现并为其他选项卡使用 fragment 会更容易吗?

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

}
}

最佳答案

您需要有一个一个 Activity,其中包含一个 frame layout,它将用作显示 5 个不同 fragments 的舞台。如果您不明白,请告诉我发布一些代码。

更新:

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

}

关于android - 是否可以将 Activity 和 fragment 与底部导航一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54693252/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com