Android 在webview中单击链接时如何启动活动?
我正在开发一个android应用程序,它有一个网络视图。我遵循了这一点,但我的活动仍然不是从web视图开始的。如何开始活动?这是我的密码Android 在webview中单击链接时如何启动活动?,android,android-activity,webview,Android,Android Activity,Webview,我正在开发一个android应用程序,它有一个网络视图。我遵循了这一点,但我的活动仍然不是从web视图开始的。如何开始活动?这是我的密码 public class MainActivity extends ActionBarActivity { WebView mWebView; ProgressBar progressBar; @Override protected void onCreate(Bundle savedInstanceState)
public class MainActivity extends ActionBarActivity {
WebView mWebView;
ProgressBar progressBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Bundle extras=getIntent().getExtras();
mWebView = (WebView) findViewById(R.id.webView1);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setAllowFileAccess(true);
mWebView.setWebViewClient(new MyWebViewClient());
mWebView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
//hide loading image
findViewById(R.id.imageLoading1).setVisibility(View.GONE);
//show webview
findViewById(R.id.webView1).setVisibility(View.VISIBLE);
}
});
mWebView.loadUrl("http://fashion.example.com/my-account/");
}
private class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.equals("http://fashion.example.com/my-account/lost-password/")) {
Intent intent = new Intent(MainActivity.this, MainActivity2.class);
startActivity(intent);
return false;
}else{
view.loadUrl(url);
return true;
}
}
}
}
我的xml文件
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/vert_loading"
tools:context="com.apks.mumbaifashion.MainActivity" >
<ImageView android:id="@+id/imageLoading1"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
<ProgressBar
android:id="@+id/progressbar"
android:layout_width="40dp"
style="?android:attr/progressBarStyleLarge"
android:layout_height="40dp"
android:layout_centerInParent="true"
android:visibility="visible"
android:progressDrawable="@drawable/progress"/>
<WebView android:id="@+id/webView1"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:visibility="gone"
/>
</RelativeLayout>
我哪里做错了?您正确设置了自定义的
MyWebViewClient
,但在下面的一行中,您只需将其替换为自定义的。尝试此操作,同时替换mWebView.setWebViewClient
行:
mWebView.setWebViewClient(new MyWebViewClient() {
@Override public void onPageFinished(WebView view, String url) {
//hide loading image
findViewById(R.id.imageLoading1).setVisibility(View.GONE);
//show webview
findViewById(R.id.webView1).setVisibility(View.VISIBLE);
}
});
这是解决办法之一。您还可以在自定义的
MyWebViewClient
类中实现onPageFinished
,或者在WebViewClient
的匿名子类中实现shouldOverrideAllowing
,我建议您直接从onPageFinished
比如:
@Override
public void onPageFinished(WebView view, String url) {
if (url.equals("http://fashion.example.com/my-account/lost-password/")){
Intent intent = new Intent(MainActivity.this, MainActivity2.class);
startActivity(intent);
}
您必须重写
应重写eurlloding
:
这应该做到:
private class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.equals("YOURLINK")) {
Intent intent = new Intent(getContext(), YourActivity.class);
startActivity(intent);
return false;
}else{
view.loadURL(url);
return true;
}
}
}
更新:
Caused by: java.lang.ClassCastException:
com.apks.mumbaifashion.MainActivity2
cannot be cast to android.app.Activity
例外情况:
Caused by: java.lang.ClassCastException:
com.apks.mumbaifashion.MainActivity2
cannot be cast to android.app.Activity
原因:
Caused by: java.lang.ClassCastException:
com.apks.mumbaifashion.MainActivity2
cannot be cast to android.app.Activity
您的
MainActivity2
类似乎没有扩展Activity
。这就是我所能看到的,只有你的清单
和StackTrace
谢谢你的快速回复。我已经替换了以下代码。现在,当我点击我必须开始第二个活动的链接时,我收到了“不幸的是,应用程序已停止”的错误,从你的日志中发布了你的相关部分,您应该会看到有关错误的很多详细信息。我已经发布了日志,错误是“java.lang.RuntimeException:无法实例化活动组件信息{com.apks.mumbaifashion/com.apks.mumbaifashion.YourActivity}:java.lang.ClassCastException:com.apks.mumbaifashion.YourActivity无法转换为android.app.activity”我看不到你代码中的任何地方。它是什么?您在哪里使用它?对不起,它是主要活动2,而不是您的活动。MainActivity2是我的第二个活动,我必须从webview开始