Где я могу изменить этот TextView для использования WebView? - PullRequest
0 голосов
/ 16 апреля 2019

ОК, я работаю над учебным пособием по главе 9 в Android Boot Camp, и у меня возникли ... на самом деле некоторые проблемы. Книга была написана для более старых версий Android Studio, но мой класс использует последнюю версию. Я сделал все возможное, чтобы найти учебники для последней версии, но они стали довольно редкими.

Глава 9 посвящена учебному пособию «Основные / подробности», в котором некоторые вещи работали, а другие нет.

Где я стою сейчас - это проблема TextView / WebView.

Я попытался просто преобразовать WebView, чтобы он соответствовал TextView, но тогда .loadUrl не будет работать, и когда я использую WebView, я получаю «непредвиденную ошибку приведения. Тег макета был TextView». И студия Android не скажет мне, где был объявлен тег макета, поэтому я в настоящее время перебираю все файлы построчно. Я не уверен, находится ли этот исходный тег макета в формате .xml, .java или я должен искать в манифесте.

Полагаю, это означает, что мне нужно изменить макет исходного кода на WebView, хотя я не могу найти в этой главе ничего, кроме проверки правильности импорта.

package com.example.bikeandbarge;

import android.app.Activity;
import android.support.design.widget.CollapsingToolbarLayout;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebView;
import android.widget.TextView;

import com.example.bikeandbarge.dummy.DummyContent;

public class ItemDetailFragment extends Fragment {

public static final String ARG_ITEM_ID = "item_id";


private DummyContent.DummyItem mItem;


public ItemDetailFragment() {
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    if (getArguments().containsKey(ARG_ITEM_ID)) {
        // Load the dummy content specified by the fragment
        // arguments. In a real-world scenario, use a Loader
        // to load content from a content provider.
        mItem = DummyContent.ITEM_MAP.get(getArguments().getString(ARG_ITEM_ID));

        Activity activity = this.getActivity();
        CollapsingToolbarLayout appBarLayout = (CollapsingToolbarLayout) activity.findViewById(R.id.toolbar_layout);
        if (appBarLayout != null) {
            appBarLayout.setTitle(mItem.content);
        }
    }
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.item_detail, container, false);

    // Show the dummy content as text in a TextView.
    if (mItem.id.equals("1")) {
        rootView = inflater.inflate(R.layout.photos, container, false);
    }
    if (mItem.id.equals("2")) {
        rootView = inflater.inflate(R.layout.tour, container, false);
    }
    // Can not get this to update to WebView-not certain where the layout tab is textView
    //if (mItem.id.equals("3")) {
    //            ((WebView) rootView.findViewById( R.id.item_detail )).loadUrl( mItem.item_url ); }
    //Can replace WebView with TextView but won't recognize .loadUrl without WebView
    if (mItem.id.equals("3")) {
        ((WebView) rootView.findViewById( R.id.item_detail )).loadUrl( mItem.item_url );

    }

    return rootView;
}
}

Я бы хотел, чтобы это работало с реально работающим loadUrl.

Ни WebView, ни TextView не позволят мне запустить программу. Файл apk просто не может быть скомпилирован для меня, чтобы даже протестировать его. Я хотел бы по крайней мере добраться до точки, где я могу скомпилировать файл apk и попытаться запустить его.

Ответы [ 2 ]

0 голосов
/ 18 апреля 2019

Откройте файл макета item_detail.xml (или это frag_item_detail.xml inn the book?) И измените элемент <TextView> на <WebView>. Тогда «Неожиданная ошибка приведения» должна исчезнуть.

0 голосов
/ 16 апреля 2019

В вашем webView и манифесте добавьте следующий код:

AndroidManifest.xml

<application
        ....
        android:usesCleartextTraffic="true"
        android:hardwareAccelerated="true"
        .....            
 >

В вашем макете, где веб-просмотр

<WebView
    ....
    android:usesCleartextTraffic="true"
    ....        
  ></WebView>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...