- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在寻找将 FragmentActivity Map 示例转换为我的应用程序的 Fragment,我已经编辑了有关上下文或导入的所有内容。我只需要将新代码放入旧代码中,但我找不到位置...(我知道我很荒谬^^)
这是我的旧 fragment 代码,在我的手机中运行良好:
package com.example.discover;
import android.Manifest;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.location.Location;
import android.location.LocationManager;
import android.os.Bundle;
import android.provider.Settings;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.location.LocationRequest;
import com.google.android.gms.location.LocationServices;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.CameraPosition;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
import com.karumi.dexter.Dexter;
import com.karumi.dexter.PermissionToken;
import com.karumi.dexter.listener.PermissionDeniedResponse;
import com.karumi.dexter.listener.PermissionGrantedResponse;
import com.karumi.dexter.listener.PermissionRequest;
import com.karumi.dexter.listener.single.PermissionListener;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.app.ActivityCompat;
import androidx.fragment.app.Fragment;
import com.google.android.gms.location.LocationListener;
public class Maps_fragment extends Fragment {
private GoogleMap mMap;
private GoogleApiClient mGoogleApiClient;
private Location mLocation;
private LocationManager mLocationManager;
private LocationRequest mLocationRequest;
private com.google.android.gms.location.LocationListener listener;
private long UPDATE_INTERVAL = 2 * 1000; /* 10 secs */
private long FASTEST_INTERVAL = 20000; /* 20 sec */
private LocationManager locationManager;
private LatLng latLng;
private boolean isPermission;
public Maps_fragment() {
// Required empty public constructor
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View rootView = inflater.inflate(R.layout.fragment_maps, container, false);
SupportMapFragment mapFragment = (SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.maps); //use SuppoprtMapFragment for using in fragment instead of activity MapFragment = activity SupportMapFragment = fragment
mapFragment.getMapAsync(new OnMapReadyCallback() {
@Override
public void onMapReady(GoogleMap mMap) {
mMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
mMap.clear(); //clear old markers
CameraPosition googlePlex = CameraPosition.builder()
.target(new LatLng(37.4219999,-122.0862462))
.zoom(10)
.bearing(0)
.tilt(45)
.build();
mMap.animateCamera(CameraUpdateFactory.newCameraPosition(googlePlex), 10000, null);
mMap.addMarker(new MarkerOptions()
.position(new LatLng(37.4629101,-122.2449094))
.title("Iron Man")
.snippet("His Talent : Plenty of money"));
mMap.addMarker(new MarkerOptions()
.position(new LatLng(37.3092293,-122.1136845))
.title("Captain America"));
}
});
return rootView;
}
}
我想添加这个:
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
if (latLng != null) {
mMap.addMarker(new MarkerOptions().position(latLng).title("Marker in Current Location"));
mMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));
}
}
@Override
public void onConnected(@Nullable Bundle bundle) {
if (ActivityCompat.checkSelfPermission(getContext(), android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(getContext(), Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
// TODO: Consider calling
// ActivityCompat#requestPermissions
// here to request the missing permissions, and then overriding
// public void onRequestPermissionsResult(int requestCode, String[] permissions,
// int[] grantResults)
// to handle the case where the user grants the permission. See the documentation
// for ActivityCompat#requestPermissions for more details.
return;
}
startLocationUpdates();
mLocation = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient);
if (mLocation == null) {
startLocationUpdates();
}
if (mLocation != null) {
// mLatitudeTextView.setText(String.valueOf(mLocation.getLatitude()));
//mLongitudeTextView.setText(String.valueOf(mLocation.getLongitude()));
} else {
Toast.makeText(getContext(), "Location not Detected", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onConnectionSuspended(int i) {
Log.i(TAG, "Connection Suspended");
mGoogleApiClient.connect();
}
@Override
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
Log.i(TAG, "Connection failed. Error: " + connectionResult.getErrorCode());
}
@Override
public void onLocationChanged(Location location) {
String msg = "Updated Location: " +
Double.toString(location.getLatitude()) + "," +
Double.toString(location.getLongitude());
// mLatitudeTextView.setText(String.valueOf(location.getLatitude()));
// mLongitudeTextView.setText(String.valueOf(location.getLongitude()));
Toast.makeText(getContext(), msg, Toast.LENGTH_SHORT).show();
// You can now create a LatLng Object for use with maps
latLng = new LatLng(location.getLatitude(), location.getLongitude());
// Obtain the SupportMapFragment and get notified when the map is ready to be used.
//it was pre written
//TODO assert getFragmentManager() != null;
SupportMapFragment mapFragment = (SupportMapFragment) getFragmentManager()
.findFragmentById(R.id.maps);
//TODO assert mapFragment != null;
mapFragment.getMapAsync((OnMapReadyCallback) this);
}
protected void startLocationUpdates() {
// Create the location request
mLocationRequest = LocationRequest.create()
.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY)
.setInterval(UPDATE_INTERVAL)
.setFastestInterval(FASTEST_INTERVAL);
// Request location updates
if (ActivityCompat.checkSelfPermission(getContext(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(getContext(), Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
// TODO: Consider calling
// ActivityCompat#requestPermissions
// here to request the missing permissions, and then overriding
// public void onRequestPermissionsResult(int requestCode, String[] permissions,
// int[] grantResults)
// to handle the case where the user grants the permission. See the documentation
// for ActivityCompat#requestPermissions for more details.
return;
}
LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient,
mLocationRequest, (LocationListener) this);
Log.d("reque", "--->>>>");
}
@Override
protected void onStart() {
super.onStart();
if (mGoogleApiClient != null) {
mGoogleApiClient.connect();
}
}
@Override
protected void onStop() {
super.onStop();
if (mGoogleApiClient.isConnected()) {
mGoogleApiClient.disconnect();
}
}
private boolean checkLocation() {
if (!isLocationEnabled())
showAlert();
return isLocationEnabled();
}
private void showAlert() {
final AlertDialog.Builder dialog = new AlertDialog.Builder(getContext());
dialog.setTitle("Enable Location")
.setMessage("Your Locations Settings is set to 'Off'.\nPlease Enable Location to " +
"use this app")
.setPositiveButton("Location Settings", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface paramDialogInterface, int paramInt) {
Intent myIntent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivity(myIntent);
}
})
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface paramDialogInterface, int paramInt) {
}
});
dialog.show();
}
private boolean isLocationEnabled() {
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
return locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER) ||
locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
}
private boolean requestSinglePermission() {
Dexter.withActivity(getActivity())
.withPermission(Manifest.permission.ACCESS_FINE_LOCATION)
.withListener(new PermissionListener() {
@Override
public void onPermissionGranted(PermissionGrantedResponse response) {
//Single Permission is granted
Toast.makeText(getContext(), "Single permission is granted!", Toast.LENGTH_SHORT).show();
isPermission = true;
}
@Override
public void onPermissionDenied(PermissionDeniedResponse response) {
// check for permanent denial of permission
if (response.isPermanentlyDenied()) {
isPermission = false;
}
}
@Override
public void onPermissionRationaleShouldBeShown(PermissionRequest permission, PermissionToken token) {
token.continuePermissionRequest();
}
}).check();
return isPermission;
}
}
这个应用程序 fragment 是一张 map ,我可以在其中跟踪我的位置。谢谢大家!
PS:这条线还不能工作:)
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
最佳答案
implements OnMapReadyCallback, GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener, com.google.android.gms.location.LocationListener
类声明中缺少此代码。
关于java - 将 FragmentActivity 转换为 Fragment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58573852/
我遇到了一个无法用应用程序的抽屉导航解决的问题。抽屉导航中的链接之一是打开 FragmentActivity(其中包含 ViewPager)。其他链接是 fragment 。现在我已将其设置为启动该
除了使用 Intents 启动方法外,还有其他方法可以调用 FragmentActivity 中的方法吗?有人可以帮忙吗? 代码如下: class MainActiviy extends Ac
在我的应用程序中,它们不是 FragmentActivity.java,但崩溃报告给了我以下错误 Fatal Exception: android.content.ActivityNotFoundEx
我是 Java 和 Android 的初学者,我认为这更像是一个 Java 问题,因为它在 Android 中表现出来。 我正在使用 Android 支持包 (android.support.v4.a
我有两项 Activity : MainActivity,它扩展了 FragmentActivity 并具有 ViewActivity,它只是一个 Activity,以 MainActivity 作为
我对 FragmentActivity 类有疑问当我导入包时: import android.support.v4.app.FragmentActivity; 当我将其放入代码中时,导入 Fragme
今天我尝试创建一个带有 fragment Activity 的项目。我有一个 MainActivity 范围 FragmentActivity。 MainActvity 有布局。 activity_m
我在使用 FragmentActivity 和 SupportMapFragment 时遇到了一些问题。 map 的缩放比例很不稳定。这是代码: public class GoogleMapActiv
Activity 在导入 FragmentActivity 时显示错误。 import android.support.v4.app.FragmentActivity; import andr
我的代码中有一个具有 ListView 的 Activity ,我通过适配器类控制此 ListView 。每个 ListView 中都有一个 TextView,我想通过单击每个项目(TextView)
我正在尝试创建一个使用 fragment 的应用程序,但是当我尝试在 FragmentActivity 中显示一个 Fragment 时,操作栏没有出现。 fragment Activity 类: p
我可以使用下面的代码转换到 Fragment 类,但是如何使用相同的代码转换到 FragmentActivity。 FragmentActivity activity = new ABC(); //
您好,您可以在这里查看我的代码。我的问题是:使用这段代码,我的 EditText 和我的 Button 字段为空,所以我无法对它们执行任何操作。 请你帮我访问这个按钮。对于由 eclipse 自动生成
我尝试将 Android 兼容性库(或现在称为支持库)v4 用于 pre-honeycomb android 设备。我明白,我应该使用 FragmentActivity 类,而不是使用 Fragmen
我的主题不工作我已经看到了这个How do I change the background color of the ActionBar of an ActionBarActivity using X
您好,我正在尝试将 Intent 传递给 FragmentActivity,但它不起作用。 Activity 在 FragmentActivity 的初始化中关闭。这是 Activity : publ
在我的应用程序中,我有选项卡,但现在我需要添加 Sherlock Actionbar 我知道我需要使用 extends SherlockActivity 但早期我有 FragmentActivity
我正在尝试将 ActionBar 按钮添加到 FragmentActivity,但我无法弄清楚我做错了什么。运行应用程序时,我看到的只是 ActionBar 上的默认菜单按钮,而不是我的按钮。 fra
我正在扩展类中的 FragmentActivity,该类用作我的其他 Activity 的基础 Activity 。我的问题是当我从我的基本 Activity 扩展我的其他 Activity 时,我失
我正在使用 android 示例,FragmentTabs . 比如说,有 4 个选项卡(A、B、C、D)。我使用此代码将选项卡 fragment (A) 替换为另一个 (E) FragmentTra
我是一名优秀的程序员,十分优秀!