Android Web 浏览器应用程序停止。无法开始活动
Posted
技术标签:
【中文标题】Android Web 浏览器应用程序停止。无法开始活动【英文标题】:Android web browser application stopping. Unable to start activity 【发布时间】:2016-06-27 04:27:21 【问题描述】:我正在尝试为我的 android 开发课程制作一个简单的网络浏览器,每次尝试运行该应用程序时,我都会收到消息“不幸的是,Navegador 已停止”。
我遵循了老师的代码,班上的每个人都可以毫无问题地运行它。我开始认为问题可能出在我的电脑上。
我正在使用 Eclipse。代码中的一些变量是西班牙语。
这是我的 activity_main.xml 基本上它有 4 个按钮
阿特拉斯(向后) 阿德兰特(前锋) Actualizar(刷新)Ir(访问网站)
<Button
android:id="@+id/btAtras"
android:layout_
android:layout_
android:layout_gravity="top"
android:layout_weight="3"
android:text="Atras"
/>
<Button
android:id="@+id/btAdelante"
android:layout_
android:layout_
android:layout_gravity="top"
android:layout_weight="3"
android:text="Adelante"
/>
<Button
android:id="@+id/btActualizar"
android:layout_
android:layout_
android:layout_gravity="top"
android:layout_weight="3"
android:text="Actualizar"
/>
这是我的 MainActivity.java
package com.curso.navegador;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.webkit.WebView;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends Activity implements OnClickListener
EditText navegador;
Button ir, atras, adelante, actualizar, borrar;
WebView sitio;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sitio = (WebView) findViewById (R.id.wvNavegador);
sitio.setWebViewClient(new ViewClient());
sitio.getSettings().setjavascriptEnabled(true);
sitio.getSettings().setLoadWithOverviewMode(true);
sitio.getSettings().setUseWideViewPort(true);
navegador = (EditText) findViewById (R.id.wvNavegador);
ir =(Button) findViewById (R.id.btIr);
atras =(Button) findViewById (R.id.btAtras);
adelante =(Button) findViewById (R.id.btAdelante);
actualizar = (Button) findViewById (R.id.btActualizar);
ir.setOnClickListener(this);
atras.setOnClickListener(this);
adelante.setOnClickListener(this);
actualizar.setOnClickListener(this);
borrar.setOnClickListener(this);
sitio.loadUrl("");
@Override
public boolean onCreateOptionsMenu(Menu menu)
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
@Override
public void onClick(View v)
// TODO Auto-generated method stub
switch(v.getId())
case R.id.btIr:
String web = navegador.getText().toString();
sitio.loadUrl(web);
break;
case R.id.btAtras:
if(sitio.canGoBack())
sitio.goBack();
break;
case R.id.btAdelante:
if(sitio.canGoForward())
sitio.goForward();
break;
case R.id.btActualizar:
sitio.reload();
break;
我们添加了这个额外的 ViewClient.java 类
package com.curso.navegador;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class ViewClient extends WebViewClient
public boolean shouldOverrideUrlLading(WebView v, String url)
v.loadUrl(url);
return true;
另外我在 android manifest 上添加了权限 android.permission.INTERNET
03-11 12:07:15.289: E/AndroidRuntime(27901): FATAL EXCEPTION: main
03-11 12:07:15.289: E/AndroidRuntime(27901): Process: com.curso.navegador, PID: 27901
03-11 12:07:15.289: E/AndroidRuntime(27901): java.lang.RuntimeException: Unable to start activity ComponentInfocom.curso.navegador/com.curso.navegador.MainActivity: java.lang.ClassCastException: android.webkit.WebView cannot be cast to android.widget.EditText
03-11 12:07:15.289: E/AndroidRuntime(27901): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2426)
03-11 12:07:15.289: E/AndroidRuntime(27901): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2490)
03-11 12:07:15.289: E/AndroidRuntime(27901): at android.app.ActivityThread.-wrap11(ActivityThread.java)
03-11 12:07:15.289: E/AndroidRuntime(27901): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1354)
03-11 12:07:15.289: E/AndroidRuntime(27901): at android.os.Handler.dispatchMessage(Handler.java:102)
03-11 12:07:15.289: E/AndroidRuntime(27901): at android.os.Looper.loop(Looper.java:148)
03-11 12:07:15.289: E/AndroidRuntime(27901): at android.app.ActivityThread.main(ActivityThread.java:5443)
03-11 12:07:15.289: E/AndroidRuntime(27901): at java.lang.reflect.Method.invoke(Native Method)
03-11 12:07:15.289: E/AndroidRuntime(27901): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
03-11 12:07:15.289: E/AndroidRuntime(27901): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
03-11 12:07:15.289: E/AndroidRuntime(27901): Caused by: java.lang.ClassCastException: android.webkit.WebView cannot be cast to android.widget.EditText
03-11 12:07:15.289: E/AndroidRuntime(27901): at com.curso.navegador.MainActivity.onCreate(MainActivity.java:30)
03-11 12:07:15.289: E/AndroidRuntime(27901): at android.app.Activity.performCreate(Activity.java:6245)
03-11 12:07:15.289: E/AndroidRuntime(27901): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1130)
03-11 12:07:15.289: E/AndroidRuntime(27901): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2379)
03-11 12:07:15.289: E/AndroidRuntime(27901): ... 9 more
这真的很令人沮丧,因为每次我启动一个新的 android 应用程序时都会遇到这种相同类型的错误,而这在以前没有发生过,而且我还没有找到解决方案。
非常感谢您的帮助。
【问题讨论】:
【参考方案1】:堆栈跟踪告诉您问题所在。您正在尝试将 WebView
转换为 EditText
。根据您提供的这一行
navegador = (EditText) findViewById (R.id.wvNavegador);
您首先将wvNavegador
转换为上面几行的webview,然后转换为编辑文本,这显然是一个问题。
【讨论】:
我完全同意@Naveed。作为建议添加的另一件事。尝试阅读和理解 log cat loggings/Errors,你会学到很多东西。了解了日志猫的错误后,就可以在网上做一个简单的研究,寻找解决办法。 谢谢!!我太紧张了,我什至没有注意到这个错误。以上是关于Android Web 浏览器应用程序停止。无法开始活动的主要内容,如果未能解决你的问题,请参考以下文章