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 クラスのメソッドにも置き換えたいと思います。問題は、new を使用して setOnClickListener で Activity を呼び出すことができないため、以前に使用した (Activity This) を使用できないことです。私は何を間違っていますか?

4

1 に答える 1

2

this次のように内部クラスのアクティビティを参照できます( :-)):

YourClassName.this

さらに 2 つのメモ:

  • 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 に答える