Привязка фрагмента через интерфейс к активности, которая его не запускала - PullRequest
0 голосов
/ 21 июня 2019

У меня есть фрагмент, который общается с деятельностью через интерфейс.Это круто и все, но возможно ли связать фрагмент с действием, которое его не запустило?

Причина, по которой я не хочу, чтобы одно действие занимало миллион строк, реализующих кодвсе методы интерфейса для фрагментов, когда я мог просто создать «вспомогательные» действия для реализации всех интерфейсов.

В настоящее время я использую шаблон ящика навигации Google, поэтому, возможно, я мог бы создавать новые действия и группировать фрагменты вокруг них.Я не уверен, сломается ли мой навигационный ящик, если я попытаюсь запустить новые действия.

Ответы [ 2 ]

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

Вы нарушаете практику разработки Android. Fragments заключены в Activity. И Activity заключен в себе. Activity не должен связываться с другим Activity через ссылки.

Действия сообщаются через ссылки здесь, поэтому я бы совершенно не рекомендовал это делать. Но вот как вы можете делать то, что просите.

class HelperActivity { // implement here
    public static HelperActivity context = this;
    public MyFragment myFragment = new MyFragment(this); // cast to implementation
}

class NormalActivity {

    void onCreate {
        getSupportFragmentManager().beginTransaction()
        .add(R.id.fragment_attach, HelperActivity.myFragment)
        .commit();
    }
}

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

Из-за жизненного цикла действия параметры действия обычно отделяются от действия.Вы можете сохранить их в saveInstancestate и получить их обратно.Таким образом, вы убедитесь, что ваша деятельность имеет правильную информацию, когда она восстанавливается.

Если содержимое изменяется где-то в течение жизненного цикла приложения, хорошо хранить это содержимое где-то постоянно (SharedPreferences, Database, File).

Если вы хотите уведомить несколько частей вашего приложения о событии, хорошим способом будет локальная трансляция.

Сказав, что мне кажется странным, что о событии следует уведомить о чем-то другом, кроме текущего (и содержащего ваш фрагмент).Когда он возобновится, он соберет необходимую информацию и обновится.

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