如何直接调用活动而无需单击按钮?

时间:2019-11-08 13:23:56

标签: android android-fragments

我正在stripe-terminal-android app上工作,他们有内置的应用程序,但是我想根据用例对其进行自定义。

stripe-app-repo的链接

当我打开应用程序时,它首先给我片段Discover Readerslink-of-code

但是我希望它能够自动单击,并且无需任何单击就可以像单击时一样工作,这样就无需每次都手动搜索-阅读器。

@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()

在Sebastein编辑回复后添加的屏幕截图

enter image description here

1 个答案:

答案 0 :(得分:1)

添加点击监听器后,

使用方法 performClick()

@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();
});

但是对我而言,最好的方法不是在片段中开始活动,而是直接在实例化片段的活动中开始。