解决方案 »

  1.   

    会不会执行onActivityResult,要看你的intent绑定的是哪个Activity。
      

  2.   

    有返回值的 : 
    StartExamPaperPlugin.this.cordova.startActivityForResult(StartExamPaperPlugin.this,intent, 1); 
    在这个方法里面 WebView 无法显示内容 , 这个你打一下日志 跟一下 在哪出了问题, 跳转界面成功 , 并且有返回值, 但是 没有显示网页是吧 , 贴一下 这个 Activity 源码 看看;
    不回调 onActivityResult()方法的这个 :  这个 跟上面的 那个 是通一个 Activity 吗 贴下代码看看 ;贴一下 两个类的完整代码 , 把相关的 标注一下  , 分析分析
      

  3.   

    package com.archermind.webviewtest;public class Main extends DroidGap implements CordovaInterface { @Override
    public void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    this.appView = (CordovaWebView) findViewById(R.id.web); super.setIntegerProperty("splashscreen", R.drawable.loading_new); super.loadUrl("http://10.20.。。", 5000); //此处地址忽略
    CordovaInterface cordovaInterface = (CordovaInterface) this;
    CordovaWebViewClient cordovaWebViewClient = new CordovaWebViewClient(
    cordovaInterface, this.appView) { @Override
    public void onPageFinished(WebView arg0, String arg1) {
    // TODO Auto-generated method stub
    super.onPageFinished(arg0, arg1);
    } @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
    // TODO Auto-generated method stub
    super.onPageStarted(view, url, favicon);
    } @Override
    public void onReceivedError(WebView arg0, int arg1, String arg2,
    String arg3) {
    // TODO Auto-generated method stub
    super.onReceivedError(arg0, arg1, arg2, arg3);
    } }; this.appView.setWebViewClient(cordovaWebViewClient);
    }}
    下面是插件类
    package com.archermind.wxt.phonegap_plugin;import android.content.Intent;public class StartExamPaperPlugin extends CordovaPlugin {
    CallbackContext callbackContext;
    Intent intent;
    String type;

    @Override
    public boolean execute(String action, JSONArray args,
    final CallbackContext callbackContext) throws JSONException {
    // TODO Auto-generated method stub
    this.callbackContext = callbackContext;
    if ("ExamPaper".equals(action)) {
    // final Intent intent = new Intent();
    intent = new Intent();
    intent.putExtra("test", args.getString(0)); //  这个地方放的是 无用参数,因为是项目中截取的代码,这个参数无意义
    intent.setClass(cordova.getActivity(), ExamPaper.class);
    handler.sendEmptyMessage(Constant.START_ACTIVITY_ACTION);
    return true;
    }
    return false;
    } private Handler handler = new Handler() {
    public void handleMessage(Message msg) {
    if (msg == null) {
    return;
    }
    switch (msg.what) {
    case Constant.START_ACTIVITY_ACTION:
    // StartExamPaperPlugin.this.cordova.startActivityForResult(StartExamPaperPlugin.this,intent, 1); //此处webView不显示
    cordova.getActivity().startActivityForResult(intent, 1); // 此处onActivityResult不执行,等待解决方法
    // cordova.getActivity().startActivity(intent);
    break;
    }
    };
    };
    /**
     * onActivityResult
     *  StartExamPaperPlugin.this.cordova.startActivityForResult(StartExamPaperPlugin.this,intent, 1);
     *  ------可以返回数据,但导致ExamPaperActivity中的webView无法显示
     *  cordova.getActivity().startActivityForResult(intent, 1);
     *  ------无法执行onActivityResult,临时用全局静态变量解决,等待更好解决方法
     */
    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent intent) {
    super.onActivityResult(requestCode, resultCode, intent);
    // 传递返回值 给js方法
    switch (resultCode) { // resultCode为回传的标记,我在第二个Activity中回传的是RESULT_OK
    case Activity.RESULT_OK:
    Log.d("request", "接收返回intent");
    callbackContext.success(intent.getStringExtra("test"));
    break;
    default:
    break;
    }
    }}
    下面是启动的新activity
    package com.archermind.wxt;@ContentView(R.layout.exam_paper_main_layout)
    public class ExamPaper extends AbActivity implements OnClickListener{
    private String test; @Override
    protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    ViewUtils.inject(this);
    test=getIntent().getStringExtra("test"); }

    /**
     * 重写finish 
     */
    @Override
    public void finish() {
    // TODO Auto-generated method stub
    Intent mIntent = new Intent(); 
            mIntent.putExtra("test", test);
                  
             //设置结果,并进行传送    
            setResult(RESULT_OK, mIntent);  
            Log.d("request", RESULT_OK+"返回intent");
    super.finish();
    }
    }
    请问是什么原因,我网上查了下,有人说 phone gap里面  DroidGap  是extends Actvity的  我这边没有源码,
    我觉得是这个里面 改了 什么     StartExamPaperPlugin.this.cordova  启动的和 我 intent.setClass(cordova.getActivity(), ExamPaper.class);  这个里面可以正常启动,我获取数据 显示到原生的TextView 都正常 就是这个avtivity里面的webview无法load数据,甚至Load一个正常的网页地址都不行,完全导致里面的webview 无法显示但是
    但是 我 cordova.getActivity().startActivityForResult(intent, 1); 这个为什么会导致onActivityResult,可是里面的 webview 是正常显示的?  奇怪啊  求解