Runnable完全不在片段内运行

时间:2014-02-21 08:51:07

标签: java android android-fragments runnable

我正在尝试将SeekBar连接到片段中的MediaPlayer,但runnable根本没有运行。我在其中放了一个log.i来查看它是否运行但根本没有任何反应。

我将Handler声明为全局变量:

Handler seekHandler;
SeekBar sBar;

然后在 onCreateView

seekHandler = new Handler();
sBar = (SeekBar) v.findViewById(R.id.seekBar1);

可运行:

Runnable run = new Runnable() {

    @Override
    public void run() {
        sBar.setMax(mp.getDuration());
        sBar.setProgress(mp.getCurrentPosition());
        Log.i("TAG", "I'm running");
        seekHandler.postDelayed(this, 25);
    }
};

mp 变量是MediaPlayer。问题是Runnable甚至没有执行过一次。我在活动中的类似应用程序中使用了完全相同的代码,并且它工作正常。这是因为runnables在片段中的行为方式不同吗?此外,我正在使用带有ViewPager和2片段的TabLayout,如果这会影响其中任何一个。

2 个答案:

答案 0 :(得分:5)

在处理程序再次提交之前,您必须至少运行一次。

在课堂上,您应至少致电seekHandler.post(run)run.run();一次。

答案 1 :(得分:0)

请您在执行Runnable的地方发布代码。根据它的外观,你将不得不使用     runOnUiThread(运行);

因为您正在从可运行的

中访问Ui