Fragment中的CordovaWebView返回NullPointerException

时间:2012-12-30 05:32:28

标签: android android-fragments android-webview cordova-2.0.0

我正在尝试在片段中实现CordovaWebView(2.2.0),但在尝试给布局充气时它会返回错误。

我的xml:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
         android:layout_width="fill_parent"
         android:layout_height="fill_parent">

<org.apache.cordova.CordovaWebView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:id = "@+id/mainView"/>

</FrameLayout>

我的onCreateView:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {

    View v = inflater.inflate(R.layout.cordovawebview, container); // <--- the error occurs here!

    return v;
}

错误:

  

10-25 15:52:02.839:ERROR / AndroidRuntime(2878):致命   例外:主要       android.view.InflateException:二进制XML文件行#21:错误膨胀类org.apache.cordova.CordovaWebView   NullPointerException CordovaWebView.java第691行

int id = getResources().getIdentifier("config", "xml", this.cordova.getActivity().getPackageName());

这里的资源似乎为空。

我已经检查了它,并且config.xml文件位于xml文件夹中。

我可以在FragmentActivity中实现它,但我需要它在片段中。

有什么想法吗?

提前致谢。

2 个答案:

答案 0 :(得分:2)

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {

    View v = inflater.inflate(R.layout.cordovawebview, container, false); // <--- add false parameter
    CordovaWebView webView = (CordovaWebView)v.findViewById(R.id.mainView);

    return v;
}

答案 1 :(得分:1)

CordovaWebViews需要在片段所在的活动以及片段本身上创建。您可以创建自己的ContextWrapper并将其提供给您的inflater,以便为您执行此操作。

以下是有关如何执行此操作的分步指南:https://github.com/Adobe-Marketing-Cloud/app-sample-android-phonegap/wiki/Embed-Webview-in-Android-Fragment