2011-08-27 69 views
0

我正在使用getwindow在我的onCreate内的一堆活动的开始处设置了很多东西。我想用类似下面的方法来取代这个:如何使用来自监听器的方法调用getWindow()

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(本)

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

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。我究竟做错了什么?

回答

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 
      } 
     }); 
    } 
} 
+0

YourClassName.this运作良好。我在我的方法中使用这个来提醒我在调用它时使用“this”。我不确定是否完全清楚,我把一种方法放在最高点,而不是我的活动中。谢谢你的帮助! – MinceMan

相关问题