【问题标题】:Android web browser application stopping. Unable to start activityAndroid Web 浏览器应用程序停止。无法开始活动
【发布时间】:2016-06-27 04:27:21
【问题描述】:

我正在尝试为我的 android 开发课程制作一个简单的网络浏览器,每次尝试运行该应用程序时,我都会收到消息“不幸的是,Navegador 已停止”。

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

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

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

  • 阿特拉斯(向后)
  • 阿德兰特(前锋)
  • Actualizar(刷新)
  • Ir(访问网站)

    <Button 
     android:id="@+id/btAtras"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_gravity="top"
     android:layout_weight="3"
     android:text="Atras"
        />
    
    <Button 
     android:id="@+id/btAdelante"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_gravity="top"
     android:layout_weight="3"
     android:text="Adelante"
        />
    
    <Button 
     android:id="@+id/btActualizar"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     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 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 应用程序时都会遇到这种相同类型的错误,而这在以前没有发生过,而且我还没有找到解决方案。

非常感谢您的帮助。

【问题讨论】:

    标签: java android eclipse android-activity runtimeexception


    【解决方案1】:

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

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

    您首先将wvNavegador 转换为上面几行的webview,然后转换为编辑文本,这显然是一个问题。

    【讨论】:

    • 我完全同意@Naveed。作为建议添加的另一件事。尝试阅读和理解 log cat loggings/Errors,你会学到很多东西。了解了日志猫的错误后,就可以在网上做一个简单的研究,寻找解决办法。
    • 谢谢!!我太紧张了,我什至没有注意到这个错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-17
    • 1970-01-01
    • 2015-04-22
    • 2019-12-14
    • 2013-09-17
    相关资源
    最近更新 更多