Как вызвать активность напрямую, не нажимая кнопку? - PullRequest
0 голосов
/ 08 ноября 2019

Я работаю над stripe-terminal-android app, у них есть встроенное приложение, но я хотел настроить его в соответствии с вариантом использования.

ссылка stripe-app-repo

когда я открываю приложение, оно сначала дает мне фрагмент, Discover Readers, ссылка на код ,

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

@Override
public void onViewCreated(@NotNull View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);

    view.findViewById(R.id.discover_button).setOnClickListener(v -> {
    final FragmentActivity activity = getActivity();
    if (activity instanceof NavigationListener) {
        ((NavigationListener) activity).onRequestDiscovery(viewModel.getSimulated());
    }
});

но, текущий код должен вызывать onRequestDiscovery, выполняется только после нажатия кнопки, как я могу сделать, как мы делаем в javascript?

document.getElementById("demo").click()) или аналогично-один? поэтому нет необходимости щелкать вручную, и это будет продолжаться.

Редактировать после ответа Себастейном.

добавил эту строку, но я хотел щелкнуть и вызвать функцию onRequestDiscovery(), которая не работает.

enter image description here view.findViewById(R.id.discover_button).performClick()

скриншот добавлен после отредактированного ответа Себастейна,

enter image description here

1 Ответ

1 голос
/ 08 ноября 2019

используйте метод executeClick () после добавления прослушивателя щелчков:

@Override
public void onViewCreated(@NotNull View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);

    Button button = view.findViewById(R.id.discover_button)
    button.setOnClickListener(v -> {
        final FragmentActivity activity = getActivity();
        if (activity instanceof NavigationListener) {
            ((NavigationListener) activity).onRequestDiscovery(viewModel.getSimulated());
        }
    button.performClick();
});

, но для меня лучший способ - не запустить действие во фрагменте, а непосредственно в деятельности, котораясоздать экземпляр фрагмента.

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