最初の回答hereを使用して、オーディオファイルの再生中に進行状況を表示するシークバー(timeSlider)を更新して繰り返しタスクを開始しようとしています。繰り返し機能はupdateTimeSlider()
です。 postDelayed
で開始された場合、updateTimeSlider
は "シンボルを解決できません"というエラーを表示します(この記事の最後にある画像を参照)。 updateTimeSlider()
は、単独で行(イメージにも示されています)しているときにそのエラーを表示しません。Android Java:postDelayedで「解決できません」
(単独行でupdateTimeSlider()
コードが行くか本当にないことに注意してください。それがその位置に機能することを実証するだけであります。)
誰も私の中で問題を修正する方法を理解するのに役立つことができますpostDelayed
行ですか?
do
をdoUpdateTimeSlider
に書き込むことを忘れたことを何人かの人々が示唆しています。忘れなかった。 updateTimeSlider
(do
なし)を実行したかったが、これは正常に実行され、postDelayed
以外のエラーは発生しません。 updateTimeSlider
は次のようになり、このJavaファイルの一番下に文を使用してJNI(Javaネイティブ・インターフェース)を介して使用C++の関数である:
private native void updateTimeSlider();
物事のJNIの側面は、正常に動作している、とupdateTimeSlider()
は、方法IでありますdoUpdateTimeSlider
ではなく、実行しようとしています。
脇には、doUpdateTimeSlider
を入れてみました。また、エラー:Variable doUpdateTimeSlider may not have been initialized
となりました。
また、私は実際にtimeSlider
シークバーを更新することにはコードがないので、私はdoUpdateTimeSlider
を実行することができれば、それは私にどうなる良いものを見ていません。
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();
}
};
これは 'updateTimeSlider'の代わりに' doUpdateTimeSlider'です –
http://stackoverflow.com/questions/19931397/variable-r-might-not-have-been-initialized – trooper
私はあなたが "あなたの 'doUpdateTimeSlider'をメンバ変数(vs local)にすることで初期化されました。あなたが見せているものとコピーしているものとの主な違いは範囲です。あなたのコードは 'onCreate'のスコープ内でローカルです。 – trooper