C# CustomWebViewRenderer下载管理器问题与CopyBackForwardList

C# CustomWebViewRenderer下载管理器问题与CopyBackForwardList,c#,android,xamarin,C#,Android,Xamarin,我还在学习android,我正在使用它创建一个混合应用程序。 一切正常,但当我下载完一个无法返回的文件后,我尝试使用copyBackForwardList方法,但我不确定如何将Xamarin.Forms.WebView转换为Android.Webkit.WebView以使用copyBackForwardList并使用其他方法 我正在尝试这样的事情 protected override bool OnBackButtonPressed() { base.OnBack

我还在学习android,我正在使用它创建一个混合应用程序。 一切正常,但当我下载完一个无法返回的文件后,我尝试使用copyBackForwardList方法,但我不确定如何将Xamarin.Forms.WebView转换为Android.Webkit.WebView以使用copyBackForwardList并使用其他方法

我正在尝试这样的事情

    protected override bool OnBackButtonPressed()
    {
        base.OnBackButtonPressed();

        String historyUrl = "";
        int i = 0;
        WebBackForwardList mWebBackForwardList = (Android.Webkit.WebView)browser;
        if (mWebBackForwardList.getCurrentIndex() > 0)
        {
            while (i < mWebBackForwardList.getCurrentIndex())
            {
                historyUrl = mWebBackForwardList.getItemAtIndex(mWebBackForwardList.getCurrentIndex() - ++i).getUrl();
                if (historyUrl != null)
                {
                    browser.Source = historyUrl;
                    Content = browser;
                }
            }
        }


        return true;
    }
protectedoverride bool OnBackButtonPressed()
{
base.OnBackButtonPressed();
字符串historyUrl=“”;
int i=0;
WebBackForwardList mWebBackForwardList=(Android.Webkit.WebView)浏览器;
如果(mWebBackForwardList.getCurrentIndex()>0)
{
而(i
如果您想访问本机控件,那么它是通过自定义渲染器完成的

您是否考虑过这可能是与Android的活动生命周期相关的问题?一旦您在下载文件后提到了问题,并且根据您提供的参考,通过下载文件,包含WebView的活动就不再是前台活动。因此,我想推荐以下代码(很抱歉在这里使用Java):


此代码的目的是在主活动退出前台时,通过在Bundle(Bundle)对象中保存其状态来保存WebView对象(浏览器)状态。

实际上,我真正想做的是修复返回按钮。它可以工作,但当我下载一个文件时它就停止工作了…实际上我真正想做的是修复返回按钮。它工作,但它停止工作,当我下载一个文件…我认为是正确的,你的诊断是好的,但在回答你使用的是安卓原生,我正在调查如何与xamarin webview相同。我发现接下来我一直在看关于活动生命周期的文档和关于WebView的文档,这可能是在Xamarin范围内实现上述建议的问题。
// ... 

private WebView browser;
private Bundle bundle; 

@Override
public void onCreate(final Bundle savedInstanceState)
{
    // ...

    if (bundle != null)
    {
        browser.restoreState(bundle);
    }
    else
    {
        browser.loadUrl("https://stackoverflow.com"); // e.g.
    }

    // ...    

}

@Override
public void onPause()
{
    super.onPause();
    bundle = new Bundle();
    browser.saveState(bundle);

}

// ...