的Android的Java:更新搜索条显示进度音频文件播放
问题描述:
这是我的第一款Android/Java应用程序。我使用的第一个答案here尝试主动重复任务,更新搜索条(“时间滑条”),以显示作为音频文件的播放进度。这里是我的代码(删除了一些不相关的行):的Android的Java:更新搜索条显示进度音频文件播放
private int timeSliderInterval = 1000; // 1 second
private Handler timeSliderHandler;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_play);
Intent intent = getIntent();
Runnable doUpdateTimeSlider = new Runnable() {
@Override
public void run() {
timeSliderHandler.postDelayed(doUpdateTimeSlider, timeSliderInterval);
updateTimeSlider();
}
};
void startUpdateTimeSlider() {
doUpdateTimeSlider.run();
}
void stopUpdateTimeSlider() {
timeSliderHandler.removeCallbacks(doUpdateTimeSlider);
}
final SeekBar timeSlider = (SeekBar) findViewById(R.id.timeSlider);
if (timeSlider != null) {
timeSliderHandler = new Handler();
startUpdateTimeSlider();
}
@Override
public void onDestroy() {
super.onDestroy();
stopUpdateTimeSlider();
}
该项目不显示在模拟器中。工具提示显示这些错误:
此外,startUpdateTimeSlider
和stopUpdateTimeSlider
功能都出现了这个错误提示:
此外,在运行窗口中,我越来越:
emulator: emulator window was out of view and was recentered
emulator: ERROR: _factory_client_recv: Unknown camera factory query name in ' '
任何帮助将不胜感激!
答
第一个问题是自我解释,你需要添加final
修改。
final Runnable doUpdateTimeSlider = ...
第二个 - 移动startUpdateTimerSlider()
方法,现在其内部onCreate()
方法
看起来你错过了}
:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_play);
Intent intent = getIntent();
Runnable doUpdateTimeSlider = new Runnable() {
@Override
public void run() {
timeSliderHandler.postDelayed(doUpdateTimeSlider, timeSliderInterval);
updateTimeSlider();
}
};
}//<--------HERE
void startUpdateTimeSlider() {
doUpdateTimeSlider.run();
}
您精确定位体现在这些错误的问题。谢谢!我不完全走出险境,很遗憾。我创建了一个新的问题:http://*.com/questions/41414330/android-java-cannot-resolve-in-postdelayed – user1147171
首先,新问题的意见是正确的答案 –