VM开始新的活动
我使用下面的链接how to get back to android activity page from webviewVM开始新的活动
的解决方案可完美dispaly只有吐司消息时中止..
但这里IM所面临的问题是后,当尝试启动新活动吐司消息即时获取虚拟机中止错误消息。
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活动
我在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
请让我知道如何解决这个问题?
menuScreenActivity menu=new menuScreenActivity();
几乎肯定是错的。你不应该创建和Activity
与new
。看起来你只是想让Context
传递给Intent
。你已经有一个Context
你保存了一个引用,所以你可以使用它来启动intent,假设你传递了一个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);
}
您可以更改注销方法,静中有你的menuScreenActivity,
public static logout(Context context){
Intent myIntent= new Intent(context,LoginActivity.class);
context.startActivity(myIntent);
}
,然后通过调用静态方法JavaScriptInterface,
menuScreenActivity.startActivity(mContext);
无法从类型Activity – Sathish
@Sathish更新答案中对非静态方法startActivity(Intent)进行静态引用,使用context.startActivity代替 –
ahah我没有看到它!你可能是对的。不要用新的创建活动... – VinceFR
@iagreen startActivity(myIntent);这里即时获取错误,因为方法startActivity(myIntent)未定义为类型JavaScriptInterface – Sathish
您的JavaScriptInterface是一个活动的内部类吗? – iagreen