gpt4 book ai didi

java - 切换按钮 onCheckChangeListener

转载 作者:行者123 更新时间:2023-12-02 06:49:18 25 4
gpt4 key购买 nike

我正在制作一个具有录制按钮和切换按钮的应用程序。录音按钮开始录音,切换按钮声明是否必须按住录音按钮才能录音或仅按一次。这就是我试图实现它的方式:

touchToRecord.setOnCheckedChangeListener(new OnCheckedChangeListener(){

@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
saveCheckedState("touchToRecord", isChecked);

if (isChecked)
{
recBtn.setOnTouchListener(new OnTouchListener(){

@Override
public boolean onTouch(View v, MotionEvent event) {

if (event.getAction() == MotionEvent.ACTION_DOWN)
{
recBtn.setImageResource(com.whizzappseasyvoicenotepad.R.drawable.record_btn_pressed);
chTimer.setBase(SystemClock.elapsedRealtime());
chTimer.setText("00:00:00");
chTimer.start();
chTimer.setTextColor(Color.GREEN);
startRecording();
}
else if (event.getAction() == MotionEvent.ACTION_UP)
{
recBtn.setImageResource(com.whizzappseasyvoicenotepad.R.drawable.record_btn);
chTimer.stop();
chTimer.setBase(SystemClock.elapsedRealtime());
chTimer.setText("00:00:00");
chTimer.setTextColor(Color.GRAY);
stopRecording();
nameAlert();
}
return true;
}
});
}
else if (isChecked == false)
{

}

如您所见,如果切换按钮处于“打开”或“选中”状态,则必须按住录制按钮才能录制,当您松开该按钮时,它会停止录制。现在这可行了,但只有一个缺陷。我将 isChecked 状态保存到共享首选项,因此,如果我将切换按钮“打开”,然后重新启动应用程序,切换按钮将保持“打开”状态,但我必须将其关闭然后再次打开才能正常工作。因此,如果我重新启动该应用程序,它仍然处于“开启”状态,但无法工作。

此外,如您所见,我还没有编写关于切换按钮为 false 时会发生什么情况的代码。

我现在的代码:

if (touchToRecord.isChecked() == true)
{
recBtn.setOnTouchListener(new OnTouchListener(){

@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN)
{
recBtn.setImageResource(com.whizzappseasyvoicenotepad.R.drawable.record_btn_pressed);
startTimer();
startRecording();
}
else if (event.getAction() == MotionEvent.ACTION_UP)
{
recBtn.setImageResource(com.whizzappseasyvoicenotepad.R.drawable.record_btn);
stopTimer();
stopRecording();
nameAlert();
}
return true;
}
});
}

if (touchToRecord.isChecked() == false)
{
recBtn.setOnClickListener(new OnClickListener(){

@Override
public void onClick(View arg0) {
if (recorder == null)
{
recBtn.setImageResource(com.whizzappseasyvoicenotepad.R.drawable.record_btn_pressed);
startTimer();
startRecording();
}
else if (recorder != null)
{
recBtn.setImageResource(com.whizzappseasyvoicenotepad.R.drawable.record_btn);
stopTimer();
stopRecording();
nameAlert();
}
}
});
}

OnCheckedChangeListener:

touchToRecord.setOnCheckedChangeListener(new OnCheckedChangeListener(){

@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
saveCheckedState("touchToRecord", isChecked);
}
});

从共享首选项获取切换按钮状态:

touchToRecord.setChecked(getCheckedState("touchToRecord"));

最佳答案

这与你的逻辑有关。您有onCheckedChangeListener,这意味着当用户更改切换按钮时,您将检查它是On还是Off。因此,当您终止应用程序并重新启动时,由于 Toggle Button 上没有任何更改,因此它将不起作用。

onTouchListener 放在 onCheckedChangeListener 之外。在您的 onCheckedChangeListener 中设置您的状态(OnOff),并在 onTouchListener 中检查它是否为 打开关闭并执行您的操作。

关于java - 切换按钮 onCheckChangeListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18239804/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com