Конструктор ViewModelProvider не принимает наследуемый от фрагмента класс в качестве аргумента - PullRequest
0 голосов
/ 26 января 2020

Я пытаюсь создать фрагмент, который будет помещен в ViewPager, который будет взаимодействовать с TabLayout. Однако при реализации MVVM в функции onCreate () я пытаюсь создать ViewModel для фрагмента, но я не могу использовать ViewModelProvider для этого, поскольку он не принимает Fragment в качестве аргумента конструктора. Вот код:

package com.example.myfirstapp;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProvider;
import androidx.lifecycle.ViewModelStoreOwner;

public class TabContaFragment extends Fragment {
    private static final String TAG = "TabConta";
    private MainViewModel pageViewModel;
    public TabContaFragment() {
        // Required empty public constructor
    }
    public static TabContaFragment newInstance() {
        return new TabContaFragment();
    }
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        pageViewModel = new ViewModelProvider(this).get(MainViewModel.class);
        pageViewModel.setIndex(TAG);
    }
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View root = inflater.inflate(R.layout.tab_conta_fragment, container, false);
        return root;
    }
}

Android Studio выдаёт мне эту ошибку:

Cannot resolve constructor ViewModelProvider(com.example.myfirstapp.TabContaFragment)

TabContaFragment наследует Fragment, который реализует ViewModelStoreOwner, что делает его действительным аргументом для конструктора ViewModelProvider. Однако, по-видимому, это не так.

...