佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1225|回复: 2

Android startActivity Error

[复制链接]
发表于 29-4-2015 10:19 AM | 显示全部楼层 |阅读模式
package ro.tapi.www.ttouch;

import android.annotation.SuppressLint;
import android.content.Intent;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.webkit.WebView;

public class MainActivity extends ActionBarActivity {
    private static final String LOGTAG = "MainActivity";
    private WebView Wv;
    @SuppressLint("JavascriptInterface")

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Wv = (WebView)findViewById(R.id.Wv1);
        Wv.getSettings().setJavaScriptEnabled(true);
        Wv.addJavascriptInterface(new JsInteration(), "control");
        Wv.loadUrl("http://www.google.com");
    }

   
public class JsInteration {
        Intent intent = new Intent("ro.tapi.www.ttouch.TreeActivity");

        startActivity(intent);  <<--- 为什么出现错误Invalid method declaration ; Return type requird .
    }
}


回复

使用道具 举报


ADVERTISEMENT

发表于 29-4-2015 06:47 PM | 显示全部楼层
本帖最后由 issac9413 于 29-4-2015 06:55 PM 编辑

First thing, this is wrong implementation of the class structure (JsInteration). Second thing, you cannot directly access the startActivity from external class.


  1. public class JsInteration {
  2.         Intent intent = new Intent("ro.tapi.www.ttouch.TreeActivity");

  3.         startActivity(intent);  <<--- 为什么出现错误Invalid method declaration ; Return type requird .
  4.     }
复制代码


Below is the correct way of creating the class. And you can call the control.start() from your javascript.

  1. public class MainActivity extends ActionBarActivity {
  2.     private static final String LOGTAG = "MainActivity";
  3.     private WebView Wv;
  4.     @SuppressLint("JavascriptInterface")

  5.     @Override
  6.     protected void onCreate(Bundle savedInstanceState) {
  7.         super.onCreate(savedInstanceState);
  8.         setContentView(R.layout.activity_main);

  9.         Wv = (WebView)findViewById(R.id.Wv1);
  10.         Wv.getSettings().setJavaScriptEnabled(true);
  11.         Wv.addJavascriptInterface(new JsInteration(MainActivity.this), "control");
  12.         Wv.loadUrl("http://www.google.com");
  13.     }


  14.     public class JsInteration {

  15.        private Context _context;
  16.         public  JsInteration(Context context){
  17.             this._context = context;
  18.         }

  19.         public void start(){
  20.             Intent intent = new Intent("ro.tapi.www.ttouch.TreeActivity");
  21.             _context.startActivity(intent);
  22.         }

  23.     }
复制代码



回复

使用道具 举报

 楼主| 发表于 29-4-2015 07:58 PM | 显示全部楼层
本帖最后由 munai.yi 于 19-5-2015 01:35 PM 编辑

我想
1 webview 打開 http://abc.com
2 當用戶按下Click 打開新的Activity
3 但總是沒打開新的Activity
JavaScript
<html>
</body>
<a href="#">Click</a>
<script language="javascript">

    function g() {
        window.control.x()
    }
</script>
</html>
Java
package ro.tapi.www.ttouch;

import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.util.Log;
import android.webkit.JavascriptInterface;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;

public class MainActivity extends ActionBarActivity {
    private static final String LOGTAG = "MainActivity";
    private WebView Wv;
    @SuppressLint("JavascriptInterface")

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Wv = (WebView)findViewById(R.id.Wv1);
        Wv.getSettings().setJavaScriptEnabled(true);
        Wv.addJavascriptInterface(new JsInteration(), "control");

        Wv.loadUrl("http://abc.com");

        Wv.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                    view.loadUrl(url);
                    return true;
                }
            }
        });
    }


public class JsInteration {
        public void x(){
            Intent intent = new Intent("ro.tapi.www.touch.Activity");
            startActivity(intent);
        }
}


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 15-8-2025 09:39 PM , Processed in 0.122221 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表