0

我使用以下链接了解如何从 webview 返回到 android 活动页面

该解决方案非常适合仅显示 Toast 消息..

但我面临的问题是当我收到 VM 中止错误消息后尝试启动新活动时。

public class JavaScriptInterface{
    Context mContext;

    /** Instantiate the interface and set the context */
    JavaScriptInterface(Context c) {
        mContext = c;
    }

    /** Show a toast from the web page */
    @JavascriptInterface
    public void showToast(String toast) {
        Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
        menuScreenActivity  menu=new menuScreenActivity ();
        menu.logout();//here i try to call the logut method
    }
}

在 menuScreenActivity Activity 中,我创建了名为 logout 的方法

menuScreenActivity 中的方法

public void logout(){
      Intent myIntent= new Intent(menuScreenActivity.this,LoginActivity.class);
      startActivity(myIntent);
    }

我的原木猫说

 JNI WARNING: jarray 0x405a2478 points to non-array object (Ljava/lang/String;)
 "WebViewCoreThread" prio=5 tid=9 NATIVE
  | group="main" sCount=0 dsCount=0 obj=0x4058d718 self=0x1fecb0
  | sysTid=746 nice=0 sched=0/0 cgrp=default handle=5148120
   | schedstat=( 23519331303 11309830622 1216 )
at android.webkit.WebViewCore.nativeTouchUp(Native Method)
at android.webkit.WebViewCore.nativeTouchUp(Native Method)
at android.webkit.WebViewCore.access$3300(WebViewCore.java:53)
at android.webkit.WebViewCore$EventHub$1.handleMessage(WebViewCore.java:1158)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.webkit.WebViewCore$WebCoreThread.run(WebViewCore.java:629)
at java.lang.Thread.run(Thread.java:1019)
VM aborting

请让我知道如何解决这个问题?

4

3 回答 3

0

Intent您在方法中创建的logout()称为意图并且您尝试启动 myIntent是否正常Intent

于 2013-01-15T07:42:43.687 回答
0

menuScreenActivity menu=new menuScreenActivity ();几乎可以肯定是错误的。你永远不应该创建和Activity使用new. 看起来你这样做只是为了让 aContext传递给Intent. 您已经Context保存了一个引用,因此您可以使用它来启动意图,假设您传递了一个 Activity 上下文。

/** Show a toast from the web page */
    @JavascriptInterface
    public void showToast(String toast) {
        Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
        Intent myIntent= new Intent(mContext,LoginActivity.class);
        mContext.startActivity(myIntent);
    }  
于 2013-01-15T08:20:22.160 回答
0

您可以在 menuScreenActivity 中将注销方法更改为静态,

public static logout(Context context){
  Intent myIntent= new Intent(context,LoginActivity.class);
  context.startActivity(myIntent);
}

然后通过调用 JavaScriptInterface 中的静态方法,

menuScreenActivity.startActivity(mContext);
于 2013-01-15T08:29:48.027 回答