当前位置: 首页 > 知识库问答 >
问题:

WebView中的goBack()几乎可以追溯到所有方面

慕意致
2023-03-14

(编辑:也许我应该重新表述标题,但它仍然正确地描述了行为。有时当你将()返回到它加载的第一个URL时,有时它不会。即使我在onResume中使用loadURL()执行此操作!请参见我在问题底部添加到活动的代码。)

后退按钮覆盖效果很好,可以追溯到我访问过的页面。直到它返回到从onCreate加载的开始URL。然后我得到了一个小延迟和一个空白页,而不是我以前看到的起始页。

有什么诀窍吗?在onCreate中多次使用同一URL滥发历史数组?

代码是用这个网站的答案编写的。这是整个java文件。

package se.avia.tdca;

import se.avia.tdca.R;

import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;
import android.view.KeyEvent;

public class Inspiration extends Activity {
    Sharedprefs share;
    WebView mywebview;

    @Override
    public void onBackPressed(){    //for < 4

        if (mywebview.canGoBack()) {
            mywebview.goBack();
            mywebview.reload(); //desperate try
            return;
        }
        super.onBackPressed();      
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if ((keyCode == KeyEvent.KEYCODE_BACK) && mywebview.canGoBack()) {
            mywebview.goBack();
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);

        setContentView(R.layout.inspiration);

        share=new Sharedprefs(this);

        mywebview = (WebView) findViewById(R.id.inspiration_webview);

        String url = share.getSubUrl()+"/sources.html";

        mywebview.getSettings().setJavaScriptEnabled(true);
        mywebview.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);    //desperate try
        final Activity activity = this;
        mywebview.setWebChromeClient(new WebChromeClient() {
            public void onProgressChanged(WebView view, int progress) {
                // Activities and WebViews measure progress with different
                // scales.
                // The progress meter will automatically disappear when we reach
                // 100%
                activity.setProgress(progress * 1000);
            }
        });
        mywebview.setWebViewClient(new WebViewClient() {
            public void onReceivedError(WebView view, int errorCode,
                    String description, String failingUrl) {
                Toast.makeText(activity, "Error loading Suppliers list: " + description,
                        Toast.LENGTH_SHORT).show();
            }
        });

        mywebview.loadUrl(url);

    }
}

编辑:我现在添加了这段代码,以便在活动切换到时强制加载起始页,而不仅仅是在创建活动和返回时。这有时也不会加载起始页。

@重写受保护的void onResume(){super.onResume();Toast.makeText(getApplicationContext(),“onResume”,Toast.LENGTH_SHORT).show();mywebview.stopLoading();String url=share.getSubUrl()“/sources.html”;mywebview.loadUrl(url);}

每次我切换到此活动时,都会显示祝酒词,但仅第一次显示起始页。其他时候,页面都是空白的。我是否必须在onPause()上以某种方式“保存”mywebview?我只是看不出上面的代码有什么问题。

共有1个答案

蒋曾笑
2023-03-14

根据文档中的示例重建活动后,我仍然遇到了问题。而且,有时在几行html之后,有时在半个屏幕之后,它会停止加载。

起始页的有效CSS中只有一行导致呈现中断,没有任何错误消息。该页面在同一部手机上的Chrome浏览器中运行良好,这表明相比之下,WebView的实现是不完整的。

感谢大家的回答,也为浪费的时间感到抱歉。遵循标准,正确编程,让错误绊倒你,让项目负利润,这太糟糕了。

如果谷歌开发者想要修补这个问题,或者至少触发一个错误,那么有问题的行是span:empty{display:none;}

 类似资料:
  • 我似乎无法让这段代码发挥作用。我所做的是用2位数字的所有可能组合填充一个数组(每个数字分别代表一个形状和颜色)。然后,我尝试使用这个数组来填充一个2d数组,在其中我创建了前一个数组中包含的元素的所有可能的组合。出于某种原因,我的2d数组中填充了所有的“21”,而不是任何类型的组合。 如果需要的话,我可以把剩下的代码放在类中,但是它太长了。这个方法中的最后一个循环只是用来打印它们以供测试,之后会被删

  • 我很难使用pip来安装几乎任何东西。我对编码不熟悉,所以我想也许这是我一直在做的错误的事情,我选择了easy_install来完成我需要做的大部分事情,这通常是有效的。然而,现在我试图下载nltk库,也没有完成这项工作。 我试图进入 但得到了如下回应: 对这个问题有什么想法吗?我真的很想得到一些反馈,告诉我如何让pip工作或者同时解决这个问题。

  • 问题内容: 我几乎让repaint()Jcomponent工作了。我让它正常工作,然后 尝试进行绝对定位,但现在不起作用。 Class 2: (This is the JComponent that I am trying to set) 我将组件添加到Container中,然后将容器添加到JPanel中,然后将JPanel添加到JFrame中。我认为这 应该可行。我有设定的首选尺寸。我曾经使它工

  • 问题内容: 在numpy中,我们可以获取对引发错误的警告的回溯。 是否有跟踪警告的一般方法? 发出警告时,我可以使python进行追溯吗? 问题答案: 通过分配给,您可以获得想要的东西。该警告模块文档本身建议您这样做,所以它不是你被诱惑的 源黑暗的一面 。:) 您可以通过分配给,将其替换为替代功能。 您可以定义一个新函数,该函数可以正常执行操作,并且还可以打印堆栈。然后,将其放置而不是原始放置:

  • 问题内容: 有没有一种方法可以修改.class文件,以便向某些方法添加Java注释?基本上,我想遍历jar文件中每个类文件的方法并注释某些方法。请注意,使用jar文件时,这不是在运行时。相反,完成后,我想使用注释修改类文件。 我确实可以访问源代码,因此,如果有一个自动的源代码修改器,那也可以工作… 我假设我需要Javassist或ASM之类的工具。如果是这样,我应该使用哪一个,我将如何处理? 问题

  • 问题内容: 我在许多JavaScript简介中都读了很多。我只是不明白。我一直认为对象是具有方法和属性的东西。我了解数组,因为它具有键值对。“字符串”或“数字”或“函数”怎么样?上面列出的这些东西对我来说就像是功能。这意味着您输入了一些东西,然后得到了一些东西。您实际上并没有获得访问属性或其他任何内容。在数组或“对象”列表中没有使用点符号。 是否有人用点符号编写每个方法的示例示例,这些示例的方法和