ViewModelProvider — .Несовместимый тип с фрагментом

Моя программа для Android раньше работала, я использовал студию Android, чтобы получить нижнюю навигацию по просмотру активности. оно работает. После того, как я запустил настоящее мобильное устройство, оно больше не работает, оно жалуется, как показано ниже:

несовместимые типы: HomeFragment невозможно преобразовать в ViewModelProviderImpl. новый ViewModelProvider(this).get(HomeViewModel.class);

HomeViewModel.java был создан студией Andorid после того, как я решил создать активность просмотра нижней навигации.

package com.abc.myapplication.ui.home;

import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.ViewModel;

public class HomeViewModel extends ViewModel {

    private final MutableLiveData<String> mText;

    public HomeViewModel() {
        mText = new MutableLiveData<>();
        mText.setValue("This is home fragment");
    }

    public LiveData<String> getText() {
        return mText;
    }
}

Мой HomeFragment.java, показанный ниже, также был создан Android Studio.

public class HomeFragment extends Fragment {

    private FragmentHomeBinding binding;

    public View onCreateView(@NonNull LayoutInflater inflater,
                             ViewGroup container, Bundle savedInstanceState) {
        HomeViewModel homeViewModel =
                new ViewModelProvider(this).get(HomeViewModel.class);

        // new code
        HomeViewModel= new ViewModelProvider(this,ViewModelProvider.AndroidViewModelFactory.getInstance(getApplication())).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;
    }

Кто-нибудь может посоветовать и дать мне образцы кодов, насколько это возможно?

Можете ли вы также включить импорт для вашего класса фрагмента?

ianhanniballake 23.05.2024 18:49
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
1
477
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

У меня была похожая проблема при использовании Java вместо Kotlin с версией compiledSDK, установленной на 34 в build.gradle(приложении). Установка версии compiledSDK на 33 фактически решает эту проблему. Вам придется понизить версию некоторых библиотек в build.gradle.

большое спасибо. ты сэкономил мне много времени

mylottofinder.com.au 27.05.2024 04:31

Будет ли приложение с скомпилированным SDK 33 допущено в Google Play?

AlexeySRG 31.05.2024 18:50

Пожалуйста, ознакомьтесь с правилами публикации, в настоящее время, по моему мнению, это разрешено.

Vedant Jha 03.06.2024 17:36

попробуй это:

viewModel = new ViewModelProvider(requireActivity()).get(HomeViewModel.class);

Откат androidx.lifecycle до версии 2.6.1 мне помог:

implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.6.1'
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.1'

Используя Java, мне хватило отката на 2.7.0.

Pat Lee 07.06.2024 15:14

Другие вопросы по теме