26

我正在使用方法 setKeepScreenOn(true) 并且无法弄清楚如何相对于当前的 Activity (它有一个内容视图集)来调用它。我已经能够通过在视图中始终存在的一个按钮上调用它来使其工作,但这感觉不对 - 我确信必须有办法解决这个问题。我尝试像这样引用当前焦点:

getCurrentFocus().setKeepScreenOn(true);

但这引发了 NullPointerException。也许没有当前的焦点。那么,谁能告诉我如何引用我在里面工作的视图类?谢谢 :)

4

5 回答 5

59

试试这个答案

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

getWindow是为活动定义的方法,不需要您先找到View

于 2011-03-16T20:11:46.447 回答
40

正如霍克所说,但解释得不好。

您也可以FLAG_KEEP_SCREEN_ON在您的 XML 布局文件中使用。

注意android:keepScreenOn="true"

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:keepScreenOn="true"
    android:orientation="vertical" >

    <!-- whatever is in your layout -->

</LinearLayout>

我现在已经将所有保持屏幕打开的选项写进了一篇博文:http:
//blog.blundellapps.com/tut-keep-screen-onawake-3-possible-ways/

于 2012-03-16T21:43:57.973 回答
5

android:keepScreenOn在 XML 中设置

于 2011-05-16T22:01:10.020 回答
1

如果您在类扩展视图上执行此操作。你可以简单:

this.setKeepScreenOn(true);
于 2011-03-16T20:14:54.193 回答
0

根据 Google Docs for android Developers 你有两种方法可以做到这一点:

第一种方式:

public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}

第二种方法是在您的 xml 文件布局中添加此属性: android:keepScreenOn="true"

于 2015-08-09T10:37:35.807 回答