【问题标题】:Android Back button on webview kills appwebview上的Android后退按钮会杀死应用程序
【发布时间】:2012-02-06 21:04:26
【问题描述】:

*已解决 我只需要公开声明我的 webview 变量,我的后退按钮类就可以正常工作。感谢您的帮助

我有一个独特的 webview 类设置,我用谷歌搜索的所有东西都没有。

我正在使用按钮来启动 webview,但我遇到的问题是,当我按下后退按钮返回我的主应用程序屏幕时,它只会杀死应用程序。我在底部添加了一些代码来尝试解决我的问题,但没有奏效。

顺便说一句,下面的代码已更新为当前对我有用的代码。

package my.android.test;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.webkit.WebView;
import android.widget.Toast;

public class MobileAppActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

}
WebView wb;
public void onMyButtonClick01(View view)  
    {  
        Toast.makeText(this, "Pay your dues here!", Toast.LENGTH_SHORT).show(); 
        wb = new WebView(this);
        wb.loadUrl("http://www.link1.html");
        setContentView(wb);           
    }       
public void onMyButtonClick02(View view)  
{  
    Toast.makeText(this, "Re-Sign here!", Toast.LENGTH_SHORT).show(); 
    wb = new WebView(this);
    wb.loadUrl("http://www.link2.html");
    setContentView(wb);

}  
public void onBackPressed () {
    if(wb != null) {
        if(wb.canGoBack()) {
             wb.goBack();
        } else {
             setContentView(R.layout.main);
             wb = null;
        }
    } else {
        super.onBackPressed();
    }
} 
}

【问题讨论】:

  • 期望的行为是什么?
  • 您针对的是哪个版本的 Android API?
  • 好吧,主应用程序屏幕有两个启动 webviews 的按钮,在点击 webview 中的后退按钮时,我的应用程序将被杀死,我希望它回到主屏幕而不是仅仅得到被杀。目标 API 是 2.1

标签: android button webview kill back


【解决方案1】:

我假设您正在其他地方节省 wb?不确定您如何从onBackPressed() 访问它。假设您确实有办法获取它。

public void onBackPressed () {
    if(wb != null) {
        if(wb.canGoBack()) {
             wb.goBack();
        } else {
             setContentView(R.layout.main);
             wb = null;
        }
    } else {
        super.onBackPressed();
    }
}

【讨论】:

  • 我想我不是因为使用你的代码我仍然得到“wb无法解析为变量”有没有办法全局声明这些变量?抱歉,我是 Java 新手,我习惯了 .net
  • 我不明白你的代码以前是如何工作的,然后:)。这就是我提到它的原因。你没有理由不能在你的类中声明一个WebView 字段并将其存储在那里。将您的WebView wb; 从您的听众中移到顶部。然后在您的onClick() 中执行wb = new WebView(this);。不是世界上最干净的东西,但更以 Android 为中心的做你想做的事情的方式是启动一个新的 Activity 而不是替换你的内容视图。然后返回将被适当地处理为默认值:)。
  • 我可能仍然缺少一些东西,根据我对您的评论的理解,我仍然遇到一些可变错误等。我将WebView wb; 移到onbuttonclick 之外,并将其放在OnCreate 语句中。但是我仍然收到错误,我会用错误更新我的主要帖子
  • 不,将它移到 onCreate() 之外。像这样:public class MobileAppActivity extends Activity { WebView wb;
猜你喜欢
  • 1970-01-01
  • 2014-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多