【问题标题】:How to redirect to URL from Fragment using a button如何使用按钮从片段重定向到 URL
【发布时间】:2019-01-21 06:04:05
【问题描述】:

有一个similar question 用于从活动重定向,

但我无法通过Fragment 找到这样做的方法。

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {

        ...

        view.myButton.setOnClickListener {
            val urlIntent = Intent("android.intent.action.VIEW", Uri.parse(WEBSITE_URL))

            startActivity(urlIntent)
        }

        return view
    }

以上代码产生异常:

android.content.ActivityNotFoundException:未找到处理 Intent 的 Activity { act=android.intent.action.VIEW dat="https://www.google.com/" }

我得到了 Main Activity 实例(如MainActivity.instance)所以 我尝试使用setClasssetComponent 尝试处理Intent,但没有成功。

【问题讨论】:

  • 嘿,你试过这种方式吗? getActivity().startActivity(urlIntent);

标签: android android-fragments kotlin


【解决方案1】:

试试这个:

String url = "https://www.google.com";
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url)); 
startActivity(i); 

【讨论】:

  • Ty 的答案,但它仍然得到一个例外,因为我在 fragment,我需要一些如何添加 MainActivity.instance 来处理意图。
  • 在片段内部,您可以使用 getter activity 获取活动的主机实例。
  • 主机我拿到了,怎么用呢?
  • 片段也有方法requireActivity(),它返回的活动不可为空。
  • 你能描述更多关于你需要什么的信息吗?似乎在活动中您有 webView?而你在他里面开什么url??
【解决方案2】:

成功了,MainActivity.instance 是片段的宿主实例。 使用requireActivity() 等获取主机。

    view.myButton.setOnClickListener {
        val urlIntent = Intent(Intent.ACTION_VIEW)
        urlIntent.data = Uri.parse(WEBSITE_URL)
        MainActivity.instance.startActivity(urlIntent)
    }

【讨论】:

    猜你喜欢
    • 2014-07-23
    • 1970-01-01
    • 2022-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多