Android:“返回”按钮绕过onKeyDown并关闭应用程序
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Android:“返回”按钮绕过onKeyDown并关闭应用程序,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2538字,纯文字阅读大概需要4分钟。
内容图文
![Android:“返回”按钮绕过onKeyDown并关闭应用程序](/upload/InfoBanner/zyjiaocheng/674/6007bd96fdff4d13ab51df0a78f63ebd.jpg)
我有一个带有4个不同标签的程序.
这些选项卡之一是其中具有ListView的ActivityGroup.当我单击列表项之一时,它将切换到WebActivity:
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Intent intent = new Intent(TabActivity2.this, WebActivity.class);
Bundle b = new Bundle();
b.putString("URL", URLs[(int)id]);
b.putString("prevActivity", "TabActivity2");
intent.putExtras(b);
replaceContentView("web", intent);
}
});
}
public void replaceContentView(String id, Intent newIntent) {
View view = getLocalActivityManager().startActivity(id,newIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)) .getDecorView(); this.setContentView(view);
}
所以现在我们在WebActivity类中.这是代码:
public class WebActivity extends ActivityGroup {
WebView mWebView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.web);
Bundle b = getIntent().getExtras();
String URL = b.getString("URL");
mWebView = (WebView) findViewById(R.id.webview);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setPluginsEnabled(true);
mWebView.loadUrl(URL);
mWebView.setWebViewClient(new FirstTabWebViewClient());
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {
mWebView.goBack();
return true;
}
Bundle b = getIntent().getExtras();
String retActivity = b.getString("prevActivity");
if (retActivity == "TabActivity2") {
Intent intent = new Intent(WebActivity.this, TabActivity2.class);
replaceContentView("list_webpages", intent);
return true;
}
return super.onKeyDown(keyCode, event);
}
public void replaceContentView(String id, Intent newIntent) {
View view = getLocalActivityManager().startActivity(id,newIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)) .getDecorView(); this.setContentView(view);
}
这是一件奇怪的事情:如果我在进入WebActivity类后立即单击“后退”按钮,它将关闭该应用程序.
但是,如果我先单击WebView内的任何链接,然后再按两次,则它将使我返回到具有ListView的原始活动.
通过在Eclipse中使用断点,我发现如果在进入WebActivity视图后立即按“后退”按钮,该程序甚至都不会访问onKeyDown.但是,如果我单击WebView中的任何链接,然后按返回按钮,则它将通过我的onKeyDown方法.
这里发生了什么??
解决方法:
您的WebView没有焦点,这导致后退按钮在该按钮(应用程序堆栈)的顶部被触发.如果单击链接,它将回到后焦点. WebView有一些与焦点有关的奇怪问题,请看一下这篇文章:Android WebView focus problem
在这里,您还将找到一些建议的解决方法来获取焦点,您需要在正确的位置调用WebView上的requestFocus().
内容总结
以上是互联网集市为您收集整理的Android:“返回”按钮绕过onKeyDown并关闭应用程序全部内容,希望文章能够帮你解决Android:“返回”按钮绕过onKeyDown并关闭应用程序所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。