Android:如何用计时器切换?

时间:2013-03-08 16:21:21

标签: android timer android-widget switch-statement timertask

我正在尝试使用切换小部件激活声音,因此我也可以将其关闭。虽然我也希望它在几秒钟后自动关闭。虽然应用程序在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();
            }
        }

1 个答案:

答案 0 :(得分:0)

在这里猜测,因为我没有尝试构建你的代码并运行它,但是:

s.performClick()是一种访问UI的操作,无法使用Timer完成。您可能需要考虑Timer调用Handler.post(传入Runnable)以确保您的UI访问内容不会让Android抱怨。或者,根据您的需要,您可以使用Handler.postDelayed完全构建计时器。