Как мне добавить WebView в один из фрагментов

#java #android

#java #Android

Вопрос:

Я пытаюсь добавить WebView в свое приложение для Android. Для этого я следую этому руководству — https://www.youtube.com/watch?v=TUXui5ItBkM

Если я введу Webview activity_main, отобразится веб-сайт, хотя это не то, что я хочу.

У меня есть 3 фрагмента, прямая трансляция, новостные статьи и настройки. Когда я добавляю WebView к фрагменту NewsArticles вот так:

 <WebView
    android:id="@ id/webview"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />
 

приложение выходит из строя. Я не уверен, в чем проблема. Кажется, я не нахожу никаких всплывающих окон с ошибками / ошибками и в Android studio. Это MainActivity код:

 webView = (WebView) findViewById(R.id.webview);
webView.setWebViewClient(new WebViewClient());
webView.loadUrl("https://www.alt-info.com");
 

У меня также включено разрешение на интернет-трафик.

Комментарии:

1. Это то, что я нашел в logcat imgur.com/a/mxZhI9T

2. вам нужно инициализировать WebView в коде фрагмента, где находится <WebView> , и переместить код из MainActivity туда

3. Вы правы. Но теперь я не уверен в том, как на самом деле реализовать код WebView, потому что файл java articlesFragment выглядит по-другому и заставил меня изменить findViewById на WebView.findViewById.

Ответ №1:

Если вы используете фрагмент, то вы должны указать это:

Замените этот следующий код

 @Override public View onCreateView(@NonNull LayoutInflater inflater,@Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
    return inflater.inflate(R.layout.fragment_articles, container, false);
}
 

с помощью этого:

 @Override public View onCreateView(@NonNull LayoutInflater inflater,@Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.fragment_articles, container, false);
    webView = (WebView) view.findViewById(R.id.webview);
}
 

Когда вы используете фрагменты, вы должны сказать «view.findViewById()». У вас есть добавить «view» перед «findViewById» КАЖДЫЙ РАЗ, когда вы инициализируете объект.

Кроме того, если приложение выходит из строя, в Android Studio обязательно должна появиться ошибка. Нажмите на «Logcat» после его запуска и проверьте наличие красного текста.

Комментарии:

1. Мне пришлось переместить код WebView из MainActivity в ArticlesFragment, но в ArticlesFragment у меня было это `@Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { вернуть inflater.inflate(R.layout. fragment_articles, контейнер, false); }« Не уверен, как добавить предоставленный вами код.

2. Попробуйте решение сейчас.