Как вызвать getWindow (), используя метод из слушателя - PullRequest
0 голосов
/ 27 августа 2011

Я использую 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), который я использовал ранее, потому что он не позволил бы мне вызвать Activity в setOnClickListener с использованием new. Что я делаю не так?

1 Ответ

2 голосов
/ 27 августа 2011

Вы можете сослаться на операцию 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
            }
        });
    }
}
...