Android Web 浏览器应用程序正在停止。无法启动 activity

Android web browser application stopping. Unable to start activity

我正在尝试为我的 android 开发制作一个简单的网络浏览器 class,每次我尝试 运行 应用程序时,我都会收到消息 "Unfortunately, Navegador has stopped" .

我遵循了我老师的代码,我 class 中的每个人都可以 运行 它没有问题。我开始认为问题可能出在我的电脑上。

我正在使用 Eclipse。代码中的一些变量是西班牙语。

这是我的 activity_main.xml
基本上它有 4 个按钮

这是我的 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 class

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 清单上添加了权限 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 ComponentInfo{com.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 应用程序时都会遇到同样类型的错误,而这在以前没有发生过,而且我还没有找到解决方案。

非常感谢你的帮助。

堆栈跟踪告诉您问题出在哪里。您正在尝试将 WebView 转换为 EditText。根据您提供的内容,这一行

navegador = (EditText) findViewById (R.id.wvNavegador);

您首先将 wvNavegador 投射到上面几行的网络视图,然后投射到编辑文本,这显然是一个问题。