ошибка setContentView в активити yandex mapKit
Делал карту в основной активити, решил переместить ее в фрагмент, код вроде простой, но выдет ошибку сет контент вью. Буду признателен если поможете
Активити
public class HomeActivity extends AppCompatActivity {
private AppBarConfiguration mAppBarConfiguration;
private ActivityMainBinding binding;
private final Point TARGET_LOCATION = new Point(59.945933, 30.320045);
private int REQUEST_CODE_PERMISSION_INTERNET = 1;
private static final int PERMISSIONS_REQUEST_FINE_LOCATION = 1;
private UserLocationLayer userLocationLayer;
private Fragment fragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
peremissionInternet();
requestLocationPermission();
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_home);
binding = ActivityMainBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
setSupportActionBar(binding.appBarMain.toolbar);
binding.appBarMain.fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});
DrawerLayout drawer = binding.drawerLayout;
NavigationView navigationView = binding.navView;
// Passing each menu ID as a set of Ids because each
// menu should be considered as top level destinations.
mAppBarConfiguration = new AppBarConfiguration.Builder(
R.id.nav_home, R.id.nav_gallery, R.id.nav_slideshow)
.setOpenableLayout(drawer)
.build();
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment_content_main);
NavigationUI.setupActionBarWithNavController(this, navController, mAppBarConfiguration);
NavigationUI.setupWithNavController(navigationView, navController);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onSupportNavigateUp() {
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment_content_main);
return NavigationUI.navigateUp(navController, mAppBarConfiguration)
|| super.onSupportNavigateUp();
}
private void requestLocationPermission() {
if (ContextCompat.checkSelfPermission(this,
"android.permission.ACCESS_FINE_LOCATION")
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this,
new String[]{"android.permission.ACCESS_FINE_LOCATION"},
PERMISSIONS_REQUEST_FINE_LOCATION);
}
}
private void peremissionInternet(){
if (ContextCompat.checkSelfPermission(this,
"android.permission.INTERNET")
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this,
new String[]{"android.permission.INTERNET"},
REQUEST_CODE_PERMISSION_INTERNET);
}
}
}
Фрагмент
public class HomeFragment extends Fragment {
private FragmentHomeBinding binding;
private final String MAPKIT_API_KEY = "бла-бла-бла";
private MapView mapView;
@Override
public void onAttach(@NonNull Context context) {
super.onAttach(context);
MapKitFactory.setApiKey(MAPKIT_API_KEY);
MapKitFactory.initialize(binding.getRoot().getContext());
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
mapView = view.findViewById(R.id.mapview);
mapView.getMap().setRotateGesturesEnabled(false);
mapView.getMap().move(new CameraPosition(new Point(0, 0), 14, 0, 0));
LinearLayout llBottomSheet = view.findViewById(R.id.bottom_sheet);
FrameLayout tp = view.findViewById(R.id.topPanel);
FrameLayout bp = view.findViewById(R.id.bp);
Button button = view.findViewById(R.id.button);
BottomSheetBehavior<LinearLayout> bottomSheetBehavior = BottomSheetBehavior.from(llBottomSheet);
bottomSheetBehavior.addBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() {
@Override
public void onStateChanged(@NonNull View bottomSheet, int newState) {
// этот код скрывает кнопку сразу же
// и отображает после того как нижний экран полностью свернется
if (BottomSheetBehavior.STATE_EXPANDED == newState) {
tp.setVisibility(View.GONE);
} else if (BottomSheetBehavior.STATE_COLLAPSED == newState) {
tp.setVisibility(View.VISIBLE);
}
bp.animate().alpha(1).setDuration(300).start();
}
@Override
public void onSlide(@NonNull View bottomSheet, float slideOffset) {
if(tp.getVisibility() == View.GONE){
tp.setVisibility(View.VISIBLE);
}
tp.animate().alpha(1 - slideOffset).setDuration(0).start();
bp.animate().alpha(1 - slideOffset).setDuration(0).start();
}
});
}
public View onCreateView(@NonNull LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
HomeViewModel homeViewModel =
new ViewModelProvider(this).get(HomeViewModel.class);
binding = FragmentHomeBinding.inflate(inflater, container, false);
View root = binding.getRoot();
final TextView textView = binding.textHome;
homeViewModel.getText().observe(getViewLifecycleOwner(), textView::setText);
return root;
}
@Override
public void onDestroyView() {
super.onDestroyView();
binding = null;
}
@Override
public void onStop() {
mapView.onStop();
MapKitFactory.getInstance().onStop();
super.onStop();
}
@Override
public void onStart() {
super.onStart();
MapKitFactory.getInstance().onStart();
mapView.onStart();
}
}
стак трейс
FATAL EXCEPTION: main
Process: com.example.taxi_full, PID: 17909
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.taxi_full/com.example.taxi_full.HomeActivity}: android.view.InflateException: Binary XML file line #19 in com.example.taxi_full:layout/fragment_home: Binary XML file line #19 in com.example.taxi_full:layout/fragment_home: Error inflating class com.yandex.mapkit.mapview.MapView
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3785)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3952)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:106)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2327)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loopOnce(Looper.java:211)
at android.os.Looper.loop(Looper.java:300)
at android.app.ActivityThread.main(ActivityThread.java:8285)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:576)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1074)
Caused by: android.view.InflateException: Binary XML file line #19 in com.example.taxi_full:layout/fragment_home: Binary XML file line #19 in com.example.taxi_full:layout/fragment_home: Error inflating class com.yandex.mapkit.mapview.MapView
Caused by: android.view.InflateException: Binary XML file line #19 in com.example.taxi_full:layout/fragment_home: Error inflating class com.yandex.mapkit.mapview.MapView
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.newInstance0(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
at android.view.LayoutInflater.createView(LayoutInflater.java:881)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:1037)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:988)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:1167)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1128)
at android.view.LayoutInflater.inflate(LayoutInflater.java:709)
at android.view.LayoutInflater.inflate(LayoutInflater.java:547)
at android.view.LayoutInflater.inflate(LayoutInflater.java:485)
at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:710)
at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:195)
at com.example.taxi_full.HomeActivity.onCreate(HomeActivity.java:43)
at android.app.Activity.performCreate(Activity.java:8192)
at android.app.Activity.performCreate(Activity.java:8159)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1341)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3765)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3952)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:106)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2327)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loopOnce(Looper.java:211)
at android.os.Looper.loop(Looper.java:300)
at android.app.ActivityThread.main(ActivityThread.java:8285)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:576)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1074)
Источник: Stack Overflow на русском