我正在设置一个简单的人工智能,聊天等功能。现在,我正在做一个小的网页视图“浏览器”。默认情况下向google打开,然后有一个小textedit和按钮来进行进一步的导航。但是,每当单击链接或我试图导航时,它都会打开默认浏览器。我尝试使用simmilar问题中的一些代码,但这导致了进一步的问题,因此我删除了它。谢谢你的帮助,这是我的代码:
按钮的Xml、清单和方法:
manifest file
<?xml version="1.0" encoding="utf-8"?>
<uses-permission android:name="android.permission.INTERNET" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme" >
<activity
android:name=".Main"
android:configChanges="orientation|keyboardHidden|screenSize"
android:label="@string/app_name"
android:theme="@style/FullscreenTheme" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="comi.coding.prometheus.ignisai.Browser"
android:parentActivityName="comi.coding.prometheus.ignisai.Main" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="comi.coding.prometheus.ignisai.Main" />
</activity>
</application>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Browser"
android:id="@+id/startBrowser"
android:onClick="StartBrowser"
android:layout_above="@+id/btnSay"
android:layout_alignRight="@+id/lblOutput"
android:layout_alignEnd="@+id/lblOutput" />
public void StartBrowser(View view) {
Intent intent = new Intent(this, Browser.class);
startActivity(intent);
}
Browser.java代码(第二次活动)
package comi.coding.prometheus.ignisai;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class Browser extends Activity {
private WebView webView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = getIntent();
webView = (WebView) findViewById(R.id.webBrowser);
webView.setWebViewClient(new MyWebViewClient());
String url = "http://google.com";
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl(url);
}
private class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
}
错误:
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime: FATAL EXCEPTION: main
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime: Process: comi.coding.prometheus.ignisai, PID: 24169
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime: java.lang.IllegalStateException: Could not execute method for android:onClick
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime: at android.support.v7.internal.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:278)
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime: at android.view.View.performClick(View.java:4497)
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime: at android.view.View$PerformClick.run(View.java:18590)
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime: at android.os.Handler.handleCallback(Handler.java:733)
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:95)
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime: at android.os.Looper.loop(Looper.java:136)
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:5021)
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime: at java.lang.reflect.Method.invokeNative(Native Method)
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime: at java.lang.reflect.Method.invoke(Method.java:515)
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:827)
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:643)
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime: at dalvik.system.NativeStart.main(Native Method)
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime: Caused by: java.lang.reflect.InvocationTargetException
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime: at java.lang.reflect.Method.invokeNative(Native Method)
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime: at java.lang.reflect.Method.invoke(Method.java:515)
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime: at android.support.v7.internal.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:273)
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime: at android.view.View.performClick(View.java:4497)
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime: at android.view.View$PerformClick.run(View.java:18590)
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime: at android.os.Handler.handleCallback(Handler.java:733)
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:95)
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime: at android.os.Looper.loop(Looper.java:136)
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:5021)
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime: at java.lang.reflect.Method.invokeNative(Native Method)
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime: at java.lang.reflect.Method.invoke(Method.java:515)
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:827)
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:643)
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime: at dalvik.system.NativeStart.main(Native Method)
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime: Caused by: android.content.ActivityNotFoundException: Unable to find explicit activity class {comi.coding.prometheus.ignisai/android.provider.Browser}; have you declared this activity in your AndroidManifest.xml?
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime: at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1723)
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime: at android.app.Instrumentation.execStartActivity(Instrumentation.java:1511)
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime: at android.app.Activity.startActivityForResult(Activity.java:3424)
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime: at android.app.Activity.startActivityForResult(Activity.java:3385)
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime: at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:784)
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime: at android.app.Activity.startActivity(Activity.java:3627)
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime: at android.app.Activity.startActivity(Activity.java:3595)
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime: at comi.coding.prometheus.ignisai.Main.StartBrowser(Main.java:251)
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime: at java.lang.reflect.Method.invokeNative(Native Method)
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime: at java.lang.reflect.Method.invoke(Method.java:515)
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime: at android.support.v7.internal.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:273)
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime: at android.view.View.performClick(View.java:4497)
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime: at android.view.View$PerformClick.run(View.java:18590)
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime: at android.os.Handler.handleCallback(Handler.java:733)
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:95)
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime: at android.os.Looper.loop(Looper.java:136)
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:5021)
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime: at java.lang.reflect.Method.invokeNative(Native Method)
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime: at java.lang.reflect.Method.invoke(Method.java:515)
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:827)
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:643)
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime: at dalvik.system.NativeStart.main(Native Method)
发布于 2015-11-14 09:36:54
这个问题与意图或清单的使用方式有关。我找到了一个我复制的深度教程,现在它正在调用第二个活动。您提供的代码不完全正常工作( web视图本身没有加载,但是在同一个布局中有一个按钮和文本编辑),当调用某些布局时,Log.d(“标记名”,“正在运行的浏览器类”)显示它没有被调用。总之,我完全重新做了清单,它是如何召唤第二次活动,它是如何工作的。我相信修复它的确切的改变是把它添加到清单中:
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
发布于 2015-11-12 03:33:38
将此添加到您的按钮中,单击:
mWebView=(WebView)findViewById(R.id.yourID);
mWebView.setWebViewClient(new MyBrowser());
将其作为类添加到类中:
private class MyBrowser extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
这是一个使用WebView的简单示例类:
public class WebViewActivity extends Activity {
private WebView webView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_webview);
webView = (WebView) findViewById(R.id.webView);
webView.setWebViewClient(new MyWebViewClient());
String url = "http://google.com";
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl(url);
}
private class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
}
这就是你要做的一切。将您的代码与以下代码进行比较
https://stackoverflow.com/questions/33663925
复制相似问题