Android Java:postDelayed中的“无法解析”
我使用第一个答案here尝试启动一个重复任务,更新一个seekbar(“timeSlider”),以在音频文件播放时显示进度。重复函数是updateTimeSlider()
。当通过postDelayed
启动时,updateTimeSlider
会给出一个“无法解析符号”错误(参见本文底部的图片)updateTimeSlider()
单独在一条线上时不会给出该错误(也在图中显示)
(请注意,updateTimeSlider()
行本身并不是真正的代码运行方式。它只是为了证明它在该位置工作。)
有人能帮我理解如何纠正postDelayed
行中的问题吗
有几个人建议我只是忘了在doUpdateTimeSlider
中写do
。我没有忘记。我想执行updateTimeSlider
(没有do
),它执行得很好,不会在postDelayed
之外产生错误^{< CD3>}是一个C++函数,它使用JNI(java本地接口),使用java文件底部的一个语句,如下所示:
private native void updateTimeSlider();
JNI方面工作得很好,updateTimeSlider()
是我试图执行的方法,而不是doUpdateTimeSlider
顺便说一句,我确实试着把doUpdateTimeSlider
放在那里,结果也出现了一个错误:Variable doUpdateTimeSlider may not have been initialized
我也不知道如果我能执行doUpdateTimeSlider
会对我有什么好处,因为里面没有代码来实际更新timeSlider
seekbar
public class PlayActivity extends AppCompatActivity {
private static final String TAG = "PlayActivity";
boolean playing = false;
private int timeSliderInterval = 1000; // 1 second
private Handler timeSliderHandler;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_play);
final Runnable doUpdateTimeSlider = new Runnable() {
@Override
public void run() {
timeSliderHandler.postDelayed(updateTimeSlider, timeSliderInterval);
updateTimeSlider();
}
};
# 1 楼答案
正如你在这里看到的:https://stackoverflow.com/a/41413191/4409113
它是:
doUpdateTimeSlider
而@ρѕρєєK也是这么说的
更新:
要修复
may not have been initialized
,您可以点击以下链接:variable r might not have been initialized
"Variable example might not have been initialized" in anonymous class
所以:
现在应该可以了
# 2 楼答案
你可以替换:
与:
你忘了在
doUpdateTimeSlider
中写do