kotlin фрагмент андроида startActivity и контекст - PullRequest
0 голосов
/ 21 мая 2018

Функция хорошо работает в 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 голосов
/ 21 мая 2018

Потому что фрагмент не является Деятельностью.Вам нужно запросить действие, в которое вложен фрагмент.Что вам нужно сделать:

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