android FragmentActivity 不响应 onKeyDown事件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android FragmentActivity 不响应 onKeyDown事件相关的知识,希望对你有一定的参考价值。
在2.3.5系统的android手机上开发,继承FragmentActivity 的activity不响应onKeyDown事件,怎么解决? 知道了,是因为布局中嵌入了Fragment导致的。多谢回答
参考技术A 首先你需要的这个
fragment
必须在当前activity中实例化了。然后你需要在
fragment中写get方法。然后就完了。如:在fragment中写public
void
setonclicklistenerforbangdingzhanghu_ok(onclicklistener
onclicklistenerbangdingzhanghu_ok.setonclicklistener(onclicklistener);
activity中
fragment.setonclicklistenerforbangdingzhanghu_ok(this);
如何在 Android Wear 应用程序的 FragmentActivity 中启用环境模式(始终开启)?
【中文标题】如何在 Android Wear 应用程序的 FragmentActivity 中启用环境模式(始终开启)?【英文标题】:How to enable Ambient Mode (Always On) in a FragmentActivity on an Android Wear App? 【发布时间】:2016-06-10 11:03:32 【问题描述】:我有一个包含 FragmentActivity 的 Android Wear 应用:
public class MyFragmentActivity extends FragmentActivity
有 2 个片段:
public class MyFirstFragment extends Fragment
和
public class MySecondFragment extends Fragment
我想在这个片段活动中启用环境模式(始终开启)。但是,根据documentation,环境模式只有在我扩展WearableActivity
时才可用。
有没有办法将FragmentActivity
和WearableActivity
的两个属性合二为一?
或
还有其他方法可以在FragmentActivity
中启用环境模式吗?
【问题讨论】:
是的,扩展 FragmentActivity 并实现 AmbientMode.AmbientCallbackProvider。 【参考方案1】:你应该实现AmbientModeSupport.AmbientCallbackProvider
而不是WearableActivity
,然后你可以扩展FragmentActivity
。
这是新的首选方法,它仍然为您提供 WearableActivity 的所有好处,但也允许您使用 Activity
(或任何子类...FragementActivity 等)。
Official docs call out the details (and example code).
更新:现在使用 AmbientModeSupport
代替 AmbientMode
。 Google 最近更改了名称,因此旧版本已弃用。
【讨论】:
你知道是否可以只在某些 Fragment 上启用环境模式而不是全部?我只想要几个 Fragments 来支持环境模式,其他的应该像平常一样关闭应用程序。 您通常使用 AmbientModeSupport.attach(this) 在 onCreate() 的 FragmentActivity 中启用环境支持。相反,您可以创建一个 Activity 必须实现的自定义接口,该接口触发附加/分离 (AmbientModeSupport) 以启用/禁用环境。在您的片段中,您可以检查父 Activity 是否属于该自定义接口(如果不是,则抛出错误)并存储参考。然后,您可以通过这种方式针对投射的界面触发环境模式。那应该可以。 顺便说一句,如果有帮助,您可以设置一个 Fragments 必须实现的自定义接口来告诉 Fragments 为环境更新屏幕(onEnterAmbientFragment、onExitAmbientFragment 等)。当 Activity 获取回调(onEnterAmbient、onExitAmbient 等)时,您的活动将存储一个引用以触发每个片段中的更新。您可以将其与上述解决方案结合使用。 谢谢,这真的很有帮助。这看起来是最好的方法,但我无法找到“分离”AmbientModeSupport
的方法。所以当我启用环境模式支持时,我不知道如何再次禁用它。你知道怎么做吗?
AmbientModeSupport 有一个 detach() 方法(参见下面的链接)。 :) 我认为这是可行的。我认为 attach() 方法启用了环境模式,所以...... detach() 应该禁用它,尽管你必须尝试。 developer.android.com/reference/android/support/wear/ambient/…【参考方案2】:
这两个问题的答案都是否,抱歉。
环境模式通过调用WearableActivity.setUseAmbient()
启用,如果您不扩展WearableActivity
,显然不可用。而且由于 Java 不支持多重继承,因此您不能同时继承 WearableActivity
和 FragmentActivity
- 它是其中之一。
你真的需要在 watch Activity 中使用 Fragments 吗?如果您真的想支持环境模式,您可能需要考虑将您的 UI 从片段中移出。
【讨论】:
【参考方案3】:如果您想在 Android Wear 上使用 Fragments 并支持 Ambient 模式,则需要使用 AmbientModeSupport
类。
让您的活动扩展FragmentActivity
并实施AmbientModeSupport.AmbientCallbackProvider
,一切就绪!
详细信息和示例在这里:https://developer.android.com/training/wearables/apps/always-on#ambient-mode-class
【讨论】:
以上是关于android FragmentActivity 不响应 onKeyDown事件的主要内容,如果未能解决你的问题,请参考以下文章
Android 关于Toolbar和FragmentActivity的问题
将参数从 Android FragmentActivity 传递给 Fragment
Android Studio 无法解析 fragmentActivity 和 ViewPager 导入
android FragmentActivity 不响应 onKeyDown事件
Android FragmentActivity 和 Tabs 的问题
在 Android 上使用 FragmentActivity.getIntent().getExtras() 时出现 NullPointerException