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 浏览器应用程序停止。无法开始活动的主要内容,如果未能解决你的问题,请参考以下文章

Android App无法从Web获取数据[重复]

Android 教你一个进程如何开多个任务(Task)

Tomcat 7 崩溃后无法启动

三星电视WEB浏览器不能使用怎么办,显示根据现行相关政策规定,暂时停止服务

如何使用指定浏览器打开网页 android开发教程

Android 7.0 (Nougat) 打盹模式停止 Web 服务