记录按钮处于活动状态时禁用其他按钮

时间:2019-04-01 09:04:57

标签: java android

我在菜单中有4个选项,并且有1个按钮Rec / Stop。我想当“录制”按钮处于活动状态并进行记录时,菜单项中的其他4个项被禁用。请帮助我。

这是activity_main.xml

<ToggleButton
    android:id="@+id/recStop"
    android:layout_width="65dp"
    android:layout_height="65dp"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="100dp"
    android:background="@drawable/tbutton"
    android:text=""
    android:textOff=""
    android:textOn="" />

这是tbutton.xml

<item android:drawable="@drawable/rec"
android:state_checked="false" />

<item android:drawable="@drawable/stop"
android:state_checked="true" />

这是MainActivity.java

private ToggleButton toggleButton;

toggleButton = (ToggleButton) findViewById(R.id.recStop);

// Button Rec / Stop
toggleButton.setOnCheckedChangeListener(new OnCheckedChangeListener() {

    @Override
    public void onCheckedChanged(CompoundButton buttonView,
                                 boolean isChecked) {

        if (isChecked) {
            speech.setRecognitionListener(VoiceRecognitionActivity.this);
            progressBar.setVisibility(View.VISIBLE);
            progressBar.setIndeterminate(true);
            speech.startListening(recognizerIntent);
        } else {
            progressBar.setIndeterminate(false);
            progressBar.setVisibility(View.INVISIBLE);
            speech.stopListening();
            speech.destroy();

        }

    }
});

这是MainActivity.java

// Menu items
public boolean onOptionsItemSelected(MenuItem item){
switch (item.getItemId()) {
    case R.id.copy:
        break;
}
switch (item.getItemId()) {
    case R.id.share:
        break;
}
switch (item.getItemId()) {
    case R.id.clear:
        break;
}
switch (item.getItemId()) {
    case R.id.about:
        break;
}
return super.onOptionsItemSelected(item);
}

2 个答案:

答案 0 :(得分:1)

switch...case的每种情况下,检查切换按钮的状态,如果选中该按钮,则避免进一步操作。同样不要使用多重开关,您必须在其中定义多个大小写,请参见下面的代码。

switch (item.getItemId()) {
    case R.id.copy:
        if(toggleButton.isChecked()) {
             //display warning message
        } else {
             // your regular code here
        }
        break;

    case R.id.share:
        if(toggleButton.isChecked()) {
             //display warning message
        } else {
             // your regular code here
        }
        break;

    case R.id.clear:
        if(toggleButton.isChecked()) {
             //display warning message
        } else {
             // your regular code here
        }

        break;

    case R.id.about:
        if(toggleButton.isChecked()) {
             //display warning message
        } else {
             // your regular code here
        }
        break;
}

答案 1 :(得分:0)

您可以使用此代码实现

  switch (item.getItemId()) {
   case R.id.copy:
    if(toggleButton.isChecked()) {
          menu.findItem(R.id.copy).setEnabled(false);
    } else {
         menu.findItem(R.id.copy).setEnabled(true);
    }
    break;

//you do the same for the rest of menu buttons
 }