我有一个带有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并关闭应用程序所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)