CordovaWebView Ошибка: org.apache.cordova.CordovaWebView не может быть приведен к android.view.View
У меня есть некоторые проблемы с реализацией Cordova 5.1.1 на Android. Я пытаюсь встроить CordovaWebView в свое приложение. Я следовал всем инструкциям, описанным на их официальном сайте, однако я продолжаю получать сообщение об ошибке "org.apache.cordova.CordovaWebView не может быть приведен к android.view.View". Я много искал помощи, но не мог найти ничего, что могло бы мне помочь. Вот мой код:
Деятельность:
public class CordovaTestActivity extends Activity implements CordovaInterface {
protected CordovaPlugin activityResultCallback = null;
protected boolean activityResultKeepRunning;
protected boolean keepRunning = true;
private final ExecutorService threadPool = Executors.newCachedThreadPool();
CordovaWebView cwv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_cordova_test);
cwv = (CordovaWebView) findViewById(R.id.tutorialView);
Config.init(this);
cwv.loadUrl(Config.getStartUrl());
}
@Override
public Activity getActivity() {
return this;
}
@Override
public ExecutorService getThreadPool() {
return threadPool;
}
@Override
public Object onMessage(String arg0, Object arg1) {
return null;
}
@Override
public void setActivityResultCallback(CordovaPlugin plugin) {
this.activityResultCallback = plugin;
}
@Override
public void startActivityForResult(CordovaPlugin command, Intent intent, int requestCode) {
this.activityResultCallback = command;
this.activityResultKeepRunning = this.keepRunning;
if (command != null) {
this.keepRunning = false;
}
super.startActivityForResult(intent, requestCode);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
CordovaPlugin callback = this.activityResultCallback;
if (callback != null) {
callback.onActivityResult(requestCode, resultCode, intent);
}
} }
XML:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.cordovatest.CordovaTestActivity" >
<org.apache.cordova.CordovaWebView
android:id="@+id/tutorialView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>
config.xml
<widget id="com.example.hello" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<preference name="loglevel" value="DEBUG" />
<preference name="AndroidLaunchMode" value="singleTop" />
<name>Hello World</name>
<description>
A sample Apache Cordova application that responds to the deviceready event.
</description>
<author email="dev@cordova.apache.org" href="http://cordova.io">
Apache Cordova Team
</author>
<content src="index.html" />
<access origin="*" />
<preference name="useBrowserHistory" value="true" />
<preference name="exit-on-suspend" value="false" />
<preference name="fullscreen" value="false" />
<preference name="webviewbounce" value="true" />
</widget>
2 ответа
Я нашел решение для этого. Мы можем использовать org.apache.cordova.engine.SystemWebView вместо CordovaWebView, и он будет работать как положено.
Я знаю, что слишком поздно отвечу на этот вопрос, но сегодня я сталкиваюсь с этой проблемой и пытаюсь найти решение.
В реализации 5.1.1 cordova для Android CordovaWebView преобразовал из CustomwebView в интерфейс, и мы не можем использовать его в макете, поэтому приложение не может быть скомпилировано.
Другая реализация веб-просмотра, предоставленная cordova, известная как SystemWebView в пакете org.apache.cordova.engine.
Я не знаю, почему разработчик cordova преобразовал cordovawebview в интерфейс