开关一次后按钮停止工作

Posted

技术标签:

【中文标题】开关一次后按钮停止工作【英文标题】:Button stop functioning after turning on and off once 【发布时间】:2017-03-26 15:54:19 【问题描述】:

应用程序有一个图像按钮,可以打开和关闭屏幕亮度,但是在打开和关闭一次后,该按钮不再起作用。有谁知道,代码有什么问题?

import android.provider.Settings;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.WindowManager;
import android.widget.ImageButton;

public class ScreenFlashlight extends AppCompatActivity 
    private static String tag;
    private static final String TAG = tag ;
    private boolean brightnessOnOff;
    private ImageButton screenFlashOnOffButton;

    public ScreenFlashlight() throws Settings.SettingNotFoundException 
    

    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_screen_flashlight);
        screenFlashOnOffButton = (ImageButton) findViewById(R.id.flashOnOffButton);
        brightnessOnOff = false;


    
    public void screenFlashButtonClicked(View view) 

            try 
                if (brightnessOnOff) 

                    turnBrightnessOff();
                    Log.d(TAG, "screenFlashButtonClicked: ");
                 else 
                    brightnessOnOff = true;
                    turnBrightnessOn();
                    Log.d(TAG, "screenFlashButtonClicked: ");
                
             catch (Exception e) 
                e.printStackTrace();
            

    



    private void turnBrightnessOn() 
        try 
            screenFlashOnOffButton.setImageResource(R.drawable.screenonbutton);
            int currentBrightness = Settings.System.getInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS);
            //Screen refresh to add brightness

            WindowManager.LayoutParams lp = getWindow().getAttributes();
            lp.screenBrightness = currentBrightness/ 100.0f;
            getWindow().setAttributes(lp);


         catch (Exception e) 
            e.printStackTrace();
        
    

    private void turnBrightnessOff() 
        try 
            screenFlashOnOffButton.setImageResource(R.drawable.screenoffbutton);
            int currentBrightness = Settings.System.getInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS);
            //Refresh screen

            WindowManager.LayoutParams lpp = getWindow().getAttributes();
            lpp.screenBrightness = currentBrightness;
            getWindow().setAttributes(lpp);
         catch (Exception e) 
            e.printStackTrace();
        
    

【问题讨论】:

【参考方案1】:

在关闭亮度时,您永远不会将brightnessOnOff 设置为false,因此在您第一次按下按钮后它将具有值true。所以你的代码每次都会进入if块。您需要做的是在关闭亮度时将brightnessOnOff 设置为false,并在再次打开亮度时将其设置为true。基本上,您需要在 truefalse 之间交替使用 brightnessOnOff 才能正常工作

【讨论】:

以上是关于开关一次后按钮停止工作的主要内容,如果未能解决你的问题,请参考以下文章

UIPageViewController 在 SwiftUI 中滑动 1 次后停止工作

在 FF 和 Chrome(但不是 Safari)中单击几次后,jQuery animate scrollLeft 停止工作

按钮开关的工作原理及如何区别作用

按钮开关的工作原理及如何区别作用

在 codeigniter 中提交一次后,在每次刷新时停止表单提交

在表格中悬停几次后,引导弹出窗口停止