Доступ к глобальным переменным внутри фрагментов - PullRequest
0 голосов
/ 27 апреля 2018

Я только что создал приложение, которое использует много фрагментов для работы. Я создал Viewpager с более чем 10 фрагментами. Теперь я хочу установить переменные из фрагмента, чтобы они могли быть доступны для другого фрагмента.

Что я пробовал до сих пор. Я создаю глобальную переменную для хранения значения

public class DataSite extends Application {

private String someVar;

public String getSomeVar(){
    return someVar;
}

public void setSomeVar(String someVar){
    this.someVar = someVar;
}

}

Во фрагменте А. Я устанавливаю значение, как показано ниже

((DataSite) getActivity().getApplicationContext()).setSomeVar("Tes");

И из другого фрагмента я пытался получить значение, подобное этому

((DataSite)getActivity().getApplication()).getSomeVar();

Но как только я нажимаю кнопку во фрагменте A, который приложение пытается установить для глобального класса var ... Приложение неожиданно завершает работу и в Android Studio не отображается сообщение об ошибке.

Может быть, кто-нибудь может объяснить, почему это происходит

Ответы [ 2 ]

0 голосов
/ 14 июня 2019

((DataSite)getActivity().getApplication()).getSomeVar(); // это правильно

((DataSite) getActivity().getApplicationContext()).setSomeVar("Tes"); // это неправильно

.getApplication() правильный путь

0 голосов
/ 27 апреля 2018

вам нужно добавить свой настраиваемый класс приложения в манифест как

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.some.somemore">

    <application
        android:name=".DataSite"
      ....> </application>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...