加载我的透明活动会隐藏键盘

时间:2014-02-16 21:01:20

标签: android android-activity

我在后台BroadcastReceiver中管理一些事件。在某些特定情况下,我需要启动一项活动。这个活动应该是隐藏的。不应向用户显示任何内容。

效果很好但是如果用户使用键盘输入内容,则会隐藏键盘。如果用户使用GMail编写电子邮件,则会保存“草稿”。

似乎此活动到达顶部并停止用户正在使用的活动,即使它不可见。有什么方法可以解决这个问题吗?

这是我如何在清单中声明活动:

<activity 
    android:name=".MyInvisbleActivity" 
    android:theme="@android:style/Theme.Translucent.NoTitleBar">
</activity>  

这是我启动它的方式:

Intent intent = new Intent(MyContext, MyInvisbleActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
MyContext.startActivity(intent);

这是MyInvisbleActivity onCreate():

@Override 
public void onCreate(Bundle savedInstanceState)
{   
    super.onCreate(savedInstanceState);                

    //setContentView(---); //This is not used          
    Window oWindow = getWindow();
    oWindow.addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);

    --do work--
}

谢谢!

2 个答案:

答案 0 :(得分:0)

Android为此android:theme="@android:style/Theme.NoDisplay"

提供了主题

或者听起来你可能真的想要一个服务。但是您需要提供有关您要实现的目标的更多信息

答案 1 :(得分:-1)

首先,在你的追逐中,我将使用片段而不是空的透明活动,但如果你需要使用一个活动我认为你需要:

在res / values / styles.xml文件中添加以下样式(如果没有,请创建它。)这是一个完整的文件:

    <?xml version="1.0" encoding="utf-8"?>
<resources>
  <style name="Theme.Transparent" parent="android:Theme">
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowIsFloating">true</item>
    <item name="android:backgroundDimEnabled">false</item>
  </style>
</resources>

然后将样式应用于您的活动,例如:

    <activity android:name=".SampleActivity" android:theme="@style/Theme.Transparent">
...
</activity>