【问题标题】:How to call activity directly without clicking button?如何在不点击按钮的情况下直接调用活动?
【发布时间】:2020-03-05 03:19:42
【问题描述】:

我正在开发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()) 或类似的?所以无需手动点击,它会继续进行。

Sebastein 回答后编辑。

添加了这一行,但我想单击并调用函数onRequestDiscovery(),但它不起作用。

view.findViewById(R.id.discover_button).performClick()

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

【问题讨论】:

  • 发现此链接很有用,但正在工作/弄清楚如何使其工作。 stackoverflow.com/questions/12637693/…
  • 很抱歉,为了发布没有阅读错误,我错误地写了函数getSharedPreferencesgetSharedPreferences 两次,而我一定只尝试了一次getSharedPreferences()。对不起社区,但我不会删除这篇文章来隐藏我的错误。

标签: android android-fragments


【解决方案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();
});

但对我来说,最好的方法不是在片段中启动 Activity,而是直接在实例化片段的 Activity 中启动。

【讨论】:

  • 感谢@Sebastien,但它现在正在工作,我正在更新我对您回复的回答。
  • 我说过你要在 setOnClickListener 之后调用 performClick() !
  • 好的,Sebastein,我尝试在 setOnClickListener view.findViewById(R.id.discover_button).setOnClickListener(v -> { final FragmentActivity activity = getActivity(); if (activity instanceof NavigationListener) { ((NavigationListener) activity).onRequestDiscovery(viewModel.getSimulated()); } }); view.findViewById(R.id.discover_button).performClick(); 之后添加
  • 你能提供完整的 sn-p-reference 吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-26
  • 1970-01-01
  • 1970-01-01
  • 2014-11-20
  • 2019-06-28
  • 1970-01-01
相关资源
最近更新 更多