2011-08-27 72 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

相關問題