在android cocos2dx app中添加Webview

时间:2013-09-25 16:04:30

标签: android webview cocos2d-x

我想将一个WebView放在cocos2dx 2.1.4 Layer之上。 我在Helloworld.cpp:

   JniMethodInfo methodInfo;
if (!JniHelper::getStaticMethodInfo(methodInfo, "it/enigma/POP/POP", "DisplayWebView", "()V"))
{
    // error handling
    CCLog("err test");
}
CCLog("ok test");
methodInfo.env->CallStaticVoidMethod(methodInfo.classID, methodInfo.methodID);
methodInfo.env->DeleteLocalRef(methodInfo.classID);

和Pop.java

package it.enigma.POP;

import org.cocos2dx.lib.Cocos2dxActivity;

import org.cocos2dx.lib.Cocos2dxGLSurfaceView;

import android.os.Bundle;

import android.content.Intent;///mio
import android.net.Uri;///mio
import android.widget.*;
import android.view.ViewGroup.LayoutParams;
import android.webkit.WebView;
//import android.app.Activity;

public class POP extends Cocos2dxActivity{

private static Cocos2dxActivity me = null;///mio
public static WebView _webView=null;

protected void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState); 
    me=this;
//      _webView=new WebView(this);//(WebView)findViewById(R.id.web); //
//      _webView.loadUrl("www.yahoo.it");
}

public Cocos2dxGLSurfaceView onCreateView() {
    Cocos2dxGLSurfaceView glSurfaceView = new Cocos2dxGLSurfaceView(this);
    // POP should create stencil buffer
    glSurfaceView.setEGLConfigChooser(5, 6, 5, 0, 16, 8);

    return glSurfaceView;
}



public static void DisplayWebView() {
    me.runOnUiThread(new Runnable() {
        public void run() {
//              _webView.loadUrl("file:///android_asset/iCD_credits_it.html");



            _webView=(WebView)me.findViewById(R.id.web); //
          _webView.loadUrl("www.yahoo.it");
/*              _webView.loadData(
                    "TESTO DI PROVA </br>" + "TESTO DI PROVA </br>" + 

"TESTO DI PROVA </br>" + "TESTO DI PROVA </br>" + "TESTO DI PROVA </br>" + "TESTO DI PROVA </br>" + "TESTO DI PROVA </br>" + "TESTO DI PROVA </br>" + "TESTO DI PROVA </br>" + "TESTO DI PROVA </br>" + 
                        "TESTO DI PROVA </br>" + "TESTO DI PROVA </br>" + "TESTO DI PROVA </br>" + "TESTO DI PROVA </br>" + "TESTO DI PROVA </br>" + "TESTO DI PROVA </br>" + "TESTO DI PROVA </br>" + "TESTO DI PROVA </br>" + "TESTO DI PROVA </br>" + "TESTO DI PROVA </br>" + 
                        "TESTO DI PROVA </br>" + "TESTO DI PROVA </br>" + "TESTO DI PROVA </br>" + "TESTO DI PROVA </br>" + "TESTO DI PROVA </br>" + "TESTO DI PROVA </br>" + "TESTO DI PROVA </br>" + "TESTO DI PROVA </br>" + "TESTO DI PROVA </br>" + "TESTO DI PROVA </br>" + 
                        "TESTO DI PROVA </br>" + "TESTO DI PROVA </br>" + "TESTO DI PROVA </br>" + "TESTO DI PROVA </br>" + "TESTO DI PROVA </br>" + "TESTO DI PROVA </br>" + "TESTO DI PROVA </br>" + "TESTO DI PROVA </br>" + "TESTO DI PROVA </br>" + "TESTO DI PROVA </br>" + 
                        "TESTO DI PROVA </br>", 
                        "text/html", "utf-8");
*/
            }
        });
    }

    public static void openURL() { 

        Intent i = new Intent(Intent.ACTION_VIEW);  
        i.setData(Uri.parse("file:///android_asset/iCD_credits_it.html"));
        i.setClassName("com.android.browser", "com.android.browser.BrowserActivity");
        me.startActivity(i);

/*
        File file=new File("/assets/iCD_credits_it.html");
        Uri uri = Uri.fromFile(file);
        Intent browserIntent = new Intent(Intent.ACTION_VIEW);
        browserIntent.setDataAndType(uri, "text/html");
        browserIntent.setClassName("com.android.browser", "com.android.browser.BrowserActivity");
        //browserIntent.setData(uri);
        me.startActivity(browserIntent);
*/        
       }

    public static void openURL(String url) { 
        Intent i = new Intent(Intent.ACTION_VIEW);  
        i.setData(Uri.parse(url));
        me.startActivity(i);
       }

    public static void test() { 
        LinearLayout layout = new LinearLayout(me);
        layout.setOrientation(LinearLayout.VERTICAL);  //Can also be done in xml by android:orientation="vertical"

        Button btnTag = new Button(me);
        btnTag.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
        btnTag.setText("Button");
        btnTag.setId(1000);
        layout.addView(btnTag);
        me.setContentView(layout);
    }

    static {
        System.loadLibrary("cocos2dcpp");
    }     
}

结果是java.lang.nullpointer异常。其他测试根本没有显示任何东西。 有任何想法吗? 感谢

0 个答案:

没有答案