2015-09-16 5 views
4

У меня есть некоторые проблемы с реализацией Cordova 5.1.1 на Android. Я пытаюсь внедрить CordovaWebView в свое приложение. Я выполнил все инструкции, описанные в их официальном site, однако я продолжаю получать ошибку «org.apache.cordova.CordovaWebView не может быть отнесен к android.view.View». Я много искал для некоторой помощи, но я не мог найти ничего, что могло бы мне помочь. Вот мой код:Ошибка 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="[email protected]" 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> 
+1

Кажется, что коренные люди пошли и превратили org.apache.cordova.CordovaWebView в интерфейс без обновления документации. Меня заинтересует любое исправление, которое вы нашли, так как это было написано. –

+0

@BrillPappin существует потенциальное исправление, перечисленное в разделе [этот связанный вопрос] (http://stackoverflow.com/questions/30489176/cordova-webview-inside-android-fragment-on-cordova-4-0). Однако я не смог заставить его работать нормально. – OJ7

+0

@OJK - спасибо, проблема была решена долго, и мне больше не нужно иметь дело с Кордовой, но я уверен, что эта ссылка будет полезна для других. –

ответ

1

Я знаю, что я слишком поздно ответить на этот вопрос, но сегодня я сталкиваюсь этот вопрос и попытаться найти решение.

В версии 5.1.1 для кордоны Android CordovaWebView преобразован из CustomwebView в интерфейс, и мы не можем использовать его в макете, это приложение приложения не может скомпилировать.

Другая реализация webview, предоставляемая cordova, известна как SystemWebView в пакете org.apache.cordova.engine.

Я не знаю, почему конвертированы cordovawebview Cordova разработчика интерфейс

+0

Поскольку cordova android 4 включал «подключаемые веб-просмотры», и это изменение было необходимо. Мне непонятно, если это ответ или просто комментарий – jcesarmobile

0

Я нашел решение для этого. Мы можем использовать org.apache.cordova.engine.SystemWebView вместо CordovaWebView, и он будет работать как ожидалось.