我想做什么
我在动作栏中显示/隐藏了两个图标,依赖于webview是否可以返回或继续前进。因此,如果webview可以返回,则只会显示后退操作栏图标。
我现在如何尝试
页面开始后,我会将整数设置为1
或0
以进行后退或前进。取决于webview是否可以返回或转发。之后,我致电invalidateOptionsMenu();
现在Oncreateoptions..
将隐藏或显示操作栏项,具体取决于后退或前进的整数值1
或0
。
操作栏和网页视图如何使用此代码
我的应用没有显示一致的行为。大多数情况下,如果单击链接,则会显示后退项目。我回去时会显示转发项目,但是当我访问另一个页面时(因此没有任何内容可以继续)。它仍然在显示。
代码
声明变量:
int stateForward = 1;
int stateBack = 1;
OncreateOptionsmenu:
@Override
public boolean onCreateOptionsMenu(Menu menu) { //this method is used for adding menu items to the Activity
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.webview_menu, menu);
if (stateBack == 0) //1 is true, 0 is false
{
//hide only option 1
MenuItem item = menu.findItem(R.id.goBack);
item.setVisible(false);
}
else
{
MenuItem item = menu.findItem(R.id.goBack);
item.setVisible(true);
}
if (stateForward == 0) //1 is true, 0 is false
{
//hide only option 2
MenuItem item = menu.findItem(R.id.goForward);
item.setVisible(false);
}
else
{
MenuItem item = menu.findItem(R.id.goForward);
item.setVisible(true);
}
return true;
}
OnOptionsItemSelected
@Override
public boolean onOptionsItemSelected(MenuItem item) { //this method is used for handling menu items' events
// Handle item selection
switch (item.getItemId()) {
case R.id.goBack:
if(browser.canGoBack()) {
browser.goBack();
}
return true;
case R.id.goForward:
if(browser.canGoForward()) {
browser.goForward();
}
return true;
default:
return super.onOptionsItemSelected(item);
}
}
onPageStarted
browser.setWebViewClient(new WebViewClient()
{
public void onPageStarted(WebView view, String url, Bitmap favicon) {
// TODO Auto-generated method stub
if(browser.canGoBack())
{
stateBack = 1;
invalidateOptionsMenu();
}
else
{
stateBack = 0;
invalidateOptionsMenu();
}
if(browser.canGoForward())
{
stateForward = 1;
invalidateOptionsMenu();
}
else
{
stateForward = 0;
invalidateOptionsMenu();
}
//invalidateOptionsMenu();
}
});
它可能是什么
我也觉得可能是按钮比我的WebView落后一步。示例:如果我在webview中分别执行此操作:
Website: Items that are visible:
-Website 1 - items not visible
-Website 2 - items visible of website one (so still nothing)
-Website 3 - items visible of website two (so the back button)
-back to website 2 - items visible of website three (so the back button)
-Website 4 - items visible of "back to website two" (so back and forward buttons)
但我不能100%确定这是不是真的发生了。
任何想法是什么导致了这个问题,或者如何解决它?提前致谢!
答案 0 :(得分:0)
当onPageStarted
被调用时,您检查是否可以返回或继续前进。它将返回一个与onPageStarted“之前”状态匹配的值。因为只有在加载下一页之后,webview的状态才会相同。