我正在尝试使用切换小部件激活声音,因此我也可以将其关闭。虽然我也希望它在几秒钟后自动关闭。虽然应用程序在s.performClick();
崩溃,但一切正常
有谁知道如何解决我的问题?
这里是我片段的完整代码。
public static class Therapy extends Fragment implements CompoundButton.OnCheckedChangeListener{
MediaPlayer player = null;
Switch s;
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.therapy, container, false);
Switch s = (Switch)v.findViewById(R.id.switch1);
s.setOnCheckedChangeListener(this);
return v;
}
class MyTimerTask extends TimerTask {
public void run() {
s.performClick();
}
}
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
player = MediaPlayer.create(getActivity(), R.raw.bird1);
player.setLooping(true);
player.start();
MyTimerTask myTask = new MyTimerTask();
Timer myTimer = new Timer();
myTimer.schedule(myTask, 1000);
} else {
player.stop();
player.release();
}
}
答案 0 :(得分:0)
在这里猜测,因为我没有尝试构建你的代码并运行它,但是:
s.performClick()
是一种访问UI的操作,无法使用Timer
完成。您可能需要考虑Timer
调用Handler.post
(传入Runnable)以确保您的UI访问内容不会让Android抱怨。或者,根据您的需要,您可以使用Handler.postDelayed
完全构建计时器。