C# CustomWebViewRenderer下载管理器问题与CopyBackForwardList
我还在学习android,我正在使用它创建一个混合应用程序。 一切正常,但当我下载完一个无法返回的文件后,我尝试使用copyBackForwardList方法,但我不确定如何将Xamarin.Forms.WebView转换为Android.Webkit.WebView以使用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
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);
}
// ...