Модель экземпляра ViewModelProvider Фрагмент - PullRequest
0 голосов
/ 20 апреля 2020

У меня есть модель, которая запускается на моей «MainActivity». java », которая называется так:

//MainActivity.java (public class MainActivity extends AppCompatActivity {...)
...
private ModelName mViewModel;
...
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mViewModel = new ViewModelProvider(this).get(ModelName.class);
}
...

На данный момент я использовал это приближение в каждом из моих фрагментов для создания экземпляра. та же модель и сможет взаимодействовать с переменными внутри нее:

//FragmentClass.java (public class F1_Start_Acquisition extends Fragment {...)
...
private ModelName mViewModel;
...
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
                             @Nullable Bundle savedInstanceState) {
        View view =  inflater.inflate(R.layout.f1__test__fragment, container, false);
        mViewModel = ViewModelProviders.of((FragmentActivity) 
              getActivity()).get(ModelName .class);
}

ViewModelProviders.of устарела, и я везде вижу, что его следует заменить на new ViewModelProvider(this).get(ModelName.class);, но я не хочу чтобы создать новый экземпляр модели, я просто хочу, чтобы существующий экземпляр уже был создан, и я перепробовал много подходов, которые не работали ...

Может кто-нибудь подскажет, как получить доступ к уже существующему экземпляр модели из класса инициализации Fragment.java?

1 Ответ

0 голосов
/ 20 апреля 2020
mViewModel = new ViewModelProvider(requireActivity()).get(ModelName.class);

При использовании вышеуказанного кода. Обратите внимание, что фрагмент извлекает действие, которое их содержит. Таким образом, он не будет создавать экземпляр нового объекта, а будет возвращать то же самое, что и прикрепленный к действию.

Вы можете проверить с помощью Logcat. Просто используйте mViewmodel.toString() в упражнении и фрагмент.

Надеюсь, вы его получите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...