kotlin android片段startActivity和context

时间:2018-05-21 07:53:51

标签: android android-activity kotlin fragment

该函数在MainActivity.kt中运行良好,但它在片段中有错误。

  • 1)请帮助解释一下。
  • 2)我仍然不了解背景问题,请帮助我提供易于理解的链接/信息供我阅读。

    fun openYoutubeLink(youtubeID: String) {
    val intentApp = Intent(Intent.ACTION_VIEW, Uri.parse("vnd.youtube:" + youtubeID))
    val intentBrowser = Intent(Intent.ACTION_VIEW, Uri.parse("http://www.youtube.com/watch?v=" + youtubeID))
    try {
        this.startActivity(intentApp)
    } catch (ex: ActivityNotFoundException) {
        this.startActivity(intentBrowser)
    }
    

    }

错误图片: enter image description here

1 个答案:

答案 0 :(得分:3)

因为片段不是活动。您需要请求片段嵌套的活动。 你需要做什么:

requireActivity().startActivity(intentApp)

编辑: 好吧,因为你想通过addapter使用它,这是正确的方法(想想更好的名字):

class MyFragment implements AdapterListener {
        Adapter adapter;

        @Override
        void onResume() {
            super.onResume();
            adapter = new Adapter(this);
        }

        @Override
        void onPause(){
            super.onPause();
            adapter = null;
        }

        @Override
        void openActivity(){
            ...
            requireContext().startActivity()
        }
    }

    class Adapter {

        ...

        interface AdapterListener{
            void openActivity();
        }
    }