0

我正在使用 getwindow 在我的 onCreate 中的一堆活动的开头设置很多东西。我想用如下方法替换它:

    public static void initializeScreen (Activity This){
    This.requestWindowFeature(Window.FEATURE_NO_TITLE);
    if (global.notBarOnOff == true) {
        This.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
        This.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);}
    //Keeps Screen on
    This.getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
    // Controls Screen Brightness
    Settings.System.putInt(This.getContentResolver(), SCREEN_BRIGHTNESS_MODE, SCREEN_BRIGHTNESS_MODE_MANUAL);
    final WindowManager.LayoutParams settings = This.getWindow().getAttributes();
    settings.screenBrightness = (float) 0.10;   
    This.getWindow().setAttributes(settings);
}

现在我认为通过调用 SCREEN_Controller.initializeScreen(this) 可以正常工作

后来我让用户通过按一个按钮来改变亮度。

bLight.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            settings.screenBrightness = (float) 1;
            getWindow().setAttributes(settings);

我知道要使用我的 initializeScreen 我必须将以下内容添加到我的侦听器中

WindowManager.LayoutParams settings = This.getWindow().getAttributes();

所以我想用我的 SCREEN_Controller 类中的方法替换它。问题是我不能使用之前使用的 (Activity This),因为它不允许我使用 new 调用 setOnClickListener 中的 Activity。我究竟做错了什么?

4

1 回答 1

2

您可以像这样()引用this内部类中的活动:-)

YourClassName.this

还有两个注意事项:

  • 在 Java 中,有this(全部小写),而不是This.
  • this.getWindow().getAttributes();你可以只写而不是写getWindow().getAttributes();。作为一般规则,如果在较低范围内没有声明具有相同名称的变量,则可以引用不带this.

简短的例子:

public class DontMissTwice extends Activity {

    @override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.shaving);
        TextView knife = (TextView)findViewById(R.id.knife);
        knife.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                View.OnClickListener thisListener = this; // refers to View.OnClickListener's object
                DontMissTwice thisDontMissTwice = DontMissTwice.this // refers to DontMissTwice's object
            }
        });
    }
}
于 2011-08-27T00:51:35.130 回答