0

みんな、
私はしばらくの間ネイティブ Android アプリケーションに取り組んできましたが、今はそれが終わりに近づいていますが、まだ助けが必要な問題があります。
github での私のプロジェクト
次の問題があります。ユーザーが初めてアプリケーションを起動すると、アプリは「ダイエット サイクルはいつ開始しますか?」と尋ねます。日付ピッカーポップアップで。ユーザーがポップアップから選択した結果を格納するためにSharedPreferencesを使用しています。startActivityForResult()で開始するこの日付ピッカーを処理するMainActivityとは別のDatePickerActivityがあります。DatePickerActivityは、 Intentを使用して結果をMainActivityに渡します。.
アプリをデバッグすると、DatePickerActivityのfinish()が 2 回開始され、MainActivityが複数回開始されるため、datepicker ポップアップがもう一度表示されます。 開始日がシステムに設定されると、これらの活動に問題はなく、アプリケーションは正常に機能します。 次に、ユーザーが日付をリセットしたいときが来ます - 「Изчисти」のようなテキストでバスケット アイコンを使用すると、日付ピッカーが再び 2 回表示されます。

私の説明が十分に明確であったことを願っています。あなたからの聴聞会を楽しみにしています。
よろしく、
ミハイル

4

1 に答える 1

0

私は自分の問題を回避する方法を見つけることができました。ユーザーがピッカーから日付を選択した後にメインレイアウトを再描画する必要があるため、私はそれを引き起こしたと思います。

finish();
startActivity(getIntent());

これが、アプリ内に複数の MainActivity インスタンスがある理由です。ゲストの 2 番目のことは、SharedPreferences を OS にコミットすることは非同期であり、選択した日付を確認するまでにはまだ書き込まれていないことです。
選択した日付を静的インスタンスに保存することで問題を解決しました。メイン レイアウトを再描画すると、すでに結果が得られています。
私の問題を解決しようとして時間を割いてくれた人たちに感謝します!

于 2012-11-01T17:41:15.277 に答える