Как получить доступ к функции из другого фрагмента с помощью viewmodel - PullRequest
0 голосов
/ 10 апреля 2020

У меня есть функция в одном из моих фрагментов, которая проверяет, изменили ли карты вид цветов, теперь я хочу получить доступ к этой функции, используя архитектуру модели представления, к другому фрагменту, я знаю, что для доступа к этому я должен использовать модель представления но я не совсем понимаю, как мне это сделать,

вот моя функция из фрагмента A

public boolean checkIthestudentiscleared()
    {


        //get the color of the cardview and check which color is it if #2b434f then he /she is cleared
        int background_colorbursar = cardViewbusar.getCardBackgroundColor ().getDefaultColor ();
        int background_colorsnal = cardView.getCardBackgroundColor ().getDefaultColor ();
        int background_colorsuahab = cardViewsuahub.getCardBackgroundColor ().getDefaultColor ();
        int background_colorsports = cardViewsports.getCardBackgroundColor ().getDefaultColor ();
        int background_colorcict = cardViewcict.getCardBackgroundColor ().getDefaultColor ();
        int background_colorict_service = cardViewitcservices.getCardBackgroundColor ().getDefaultColor ();
        int background_coloreudtech = cardViewedutech.getCardBackgroundColor ().getDefaultColor ();
        int background_coloritcb = cardViewitcb.getCardBackgroundColor ().getDefaultColor ();


                if(background_colorbursar == Color.parseColor ("#ffffff") || background_colorcict == Color.parseColor ("#ffffff")
                || background_colorict_service == Color.parseColor ("#ffffff") || background_coloritcb == Color.parseColor ("#ffffff")
                || background_colorsnal == Color.parseColor ("#ffffff")  || background_coloreudtech == Color.parseColor ("#ffffff")  ||
                background_colorsuahab == Color.parseColor ("#ffffff") || background_colorsports == Color.parseColor ("#ffffff")){


                    Toast.makeText (getContext (), "Your not Cleared can't create the Clearance Report!", Toast.LENGTH_SHORT).show ();

                    return false;

        }

                else
                {
                    Toast.makeText (getContext (), "The dean Has Approved your Clearance!", Toast.LENGTH_SHORT).show ();
                    checkClearanceStatusViewModel.setValue ();
                    return true;



                }



    }

Это мой видмодальный класс

public class CheckClearanceStatusViewModel extends AndroidViewModel {



    public CheckClearanceStatusViewModel(@NonNull Application application) {
        super (application);
    }







}

только что попытался сделать это, но мне не хватает логики c Я хочу иметь возможность проверить правильность этой функции из другого фрагмента

on мой фрагмент, который имеет функцию

 public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated (view, savedInstanceState);
        //init the viewmodel
        checkClearanceStatusViewModel = new ViewModelProvider (this).get (CheckClearanceStatusViewModel.class);
        checkClearanceStatusViewModel.getValue ().observe (getActivity (), new Observer<Boolean> () {
            @Override
            public void onChanged(Boolean aBoolean) {
                //logic here



            }
        });
    }

1 Ответ

0 голосов
/ 10 апреля 2020

Во фрагмент, где вы хотите проверить правильность, добавьте следующий код

viewModel.getValue().observe(getViewLifecycleOwner(), new Observer<Boolean>() {
            @Override
            public void onChanged(Boolean value) {
             //your logic here
            }
        });
...