需要打开或关闭振动器选项

时间:2016-04-20 17:12:27

标签: java android

我目前正在使用android studio构建我的第一个Android应用程序。我有按钮按下游戏,目前在游戏过程中按下按钮时会振动。我想进行切换以打开和关闭按钮。目前,我有这样的事情:

public void onCheckBoxClicked(View view){
    Vibrator vibrate = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
    boolean checked = ((CheckBox)R.id.vibratecbx).isChecked();

    if(checked){
    }
    else{
        vibrate.cancel();
    }
}

我收到关于线路((CheckBox)R.id.vibratecbx)关于不兼容类型的错误,所以我需要修复它,以及看看如何切换实际为游戏打开或关闭振动选项。 谢谢:))

这是按下按钮的主要游戏文件部分:

 button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            //vibrate on press
            Vibrator vibrate = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
            boolean isVibrator = vibrate.hasVibrator();
            if(isVibrator)
                vibrate.vibrate(50);

1 个答案:

答案 0 :(得分:1)

<(>(CheckBox)R.id.vibratecbx)没有给你一个CheckBox。

如果你想使用你的CheckBox,你需要从你膨胀的xml中获取它的引用。

例如,在您的活动中,您可以在onCreate

期间获取Checkbox
private CheckBox myCheckBox;

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        myCheckBox = (CheckBox) findViewById(R.id.vibratecbx);
    }

然后您可以根据需要使用myCheckBox。

修改

您可以保存CheckBox的状态,并在单击按钮时使用它。 因此,在onClickListener中,您可以检查应用程序是否应该振动。

因此:

    private CheckBox myCheckBox;
    private Vibrator myVibrator;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        myCheckBox = (CheckBox) findViewById(R.id.vibratecbx);

        myVibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);

        ....
        myButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // ... your actions
                if(myVibrator.hasVibrator() && myCheckBox.isChecked())
                {
                    // Vibrate for 400 milliseconds
                    myVibrator.vibrate(400);
                }
            }
        });
       }