私は最近、いくつかのデータ構造を単純なキーと値のマップに投稿することで単純化しようとしました。ログをプッシュして、.put メソッド中に値がキーに関連付けられていることを確認します。
後で .get を呼び出すと、値は使用できなくなります。重要なコード スニペット:
MainActivity.class
public final HashMap<String, Integer> resumeMap = new HashMap<String, Integer>();
if (resumeMap.containsKey(url)) {
Log.i("Value is there!", url);
resumeTime = resumeMap.get(url);
Log.i("Value set to:", "" + resumeTime);
} else {
resumeTime = 0;
Log.i("Value is not found!", "" + url);
}
public void setHashmap(String url, Integer time) {
resumeMap.put(url, time);
int newTime = resumeMap.get(url);
Log.i("Setting:", "URL: " + url);
Log.i("Setting:", "TIME:" + newTime);
}
VideoPlayer.class
MainActivity setter = new MainActivity();
setter.setHashmap(urlString, player.getCurrentPosition());
setHashmap メソッドでは、ログは期待どおりに URL と時刻の両方を正しく出力しています。ただし、デバッガーが「値が見つかりません!」を介して予想される一致するキーを確認している間でも、resumeMap.containsKey(url) は false のままです。出力。
明確にするために、MainActivity の最初のパスでは、結果が見つからないことが予想されます。その後、resumeTime が 0 で VideoPlayer クラスが呼び出され、適切な結果が得られます。キーと値の設定を確認しましたが、同じリンクを開くと、まだ 0 が返されます。
私はもともと Hashmap を独自のクラスで作成しましたが、結果は同じでした。デバッグのためだけにマップを MainActivity に移動しました。ご協力いただける場合は、何卒よろしくお願いいたします。