Android Web 浏览器应用程序正在停止。无法启动 activity
Android web browser application stopping. Unable to start activity
我正在尝试为我的 android 开发制作一个简单的网络浏览器 class,每次我尝试 运行 应用程序时,我都会收到消息 "Unfortunately, Navegador has stopped" .
我遵循了我老师的代码,我 class 中的每个人都可以 运行 它没有问题。我开始认为问题可能出在我的电脑上。
我正在使用 Eclipse。代码中的一些变量是西班牙语。
这是我的 activity_main.xml
基本上它有 4 个按钮
- Atras(向后)
- 阿德兰特(前锋)
- 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 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
投射到上面几行的网络视图,然后投射到编辑文本,这显然是一个问题。
我正在尝试为我的 android 开发制作一个简单的网络浏览器 class,每次我尝试 运行 应用程序时,我都会收到消息 "Unfortunately, Navegador has stopped" .
我遵循了我老师的代码,我 class 中的每个人都可以 运行 它没有问题。我开始认为问题可能出在我的电脑上。
我正在使用 Eclipse。代码中的一些变量是西班牙语。
这是我的 activity_main.xml
基本上它有 4 个按钮
- Atras(向后)
- 阿德兰特(前锋)
- 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 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
投射到上面几行的网络视图,然后投射到编辑文本,这显然是一个问题。