Как я могу инициализировать пользовательский интерфейс - PullRequest
0 голосов
/ 12 июня 2019

У меня есть интерфейс:

public interface ToggleChartListener {
    public void onToggleChartChanged(boolean isPie);
}

Я хочу вызвать его из действия A, чтобы действие B могло прослушать изменение.

Это то, что я пробовал такдалеко, но я получаю ClassCastException:

ToggleChartListener toggleChartListener = ((ToggleChartListener)getApplicationContext());
toggleChartListener.onToggleChartChanged(true);

Как я могу инициализировать интерфейс?

Ответы [ 2 ]

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

Это неправильный способ общения с различными видами деятельности через интерфейс.Таким образом, вы можете следовать по нижеуказанному пути.У вас есть интерфейс ToggleChartListener.В вашей Деятельности A вы должны объявить объект интерфейса следующим образом: private ToggleChartListener listener;, а затем вы должны создать метод, подобный этому:

// static because A is an activity you may not b access method from other activity
public static void initCallback(ToggleChartListener listener){
  this.listener = listener
}

Теперь вы можете вызвать метод интерфейса:

listener.onToggleChartChanged(true);

В Деятельности B вы должны позвонить:

ActivityA.initCallback(new ToggleChartListener()) // here you get override method onToggleChartChanged to access data

NB: Но самый простой способ передать значение из Деятельности A в Активность B - Intent Если ситуация васВы находитесь в Деятельности А, если вы возвращаетесь к Деятельности B после возврата к Деятельности А, вам нужен результат, тогда вы можете использовать метод onActivityResult, вызвав метод startActivityResult из вашей Деятельности А

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

Это сбой из-за ((ToggleChartListener)getApplicationContext());. Вам необходимо типизировать экземпляр от Activity B до ToggleChartListener для дальнейшего вызова onToggleChartChanged() из Activity A.

Кроме того, почему вы хотите, чтобы ваша деятельность B прослушивала изменения? Как 2 действия не могут быть видны пользователю одновременно? (Вместо этого вы можете использовать startActivityForResult())

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