1

私はアンドロイドになりました。そして、私はサーバーからデータをロードして、このデータをリストに取り込むはずのアプリケーションを開発する際に問題があります。私はそうするためにasyncTaskを使用し、データをロードしている間に画面の向きを変更するためにonRetainNonConfigurationInstance()関数を使用し、うまくいきました。オリエンテーションが変更されたときにアンドロイドのアクティビティのロケールとasyncTaskを処理する方法

問題は、自分のアクティビティのロケールの変更を処理したいときに開始されました。私はオリエンテーションにロケールの変更を変更したときに私が読んだように、これらの: -

How do I save an Android application's state?

Activity restart on rotation Android

私はだから私は使用していませんでした肖像画の風景から変更したレイアウトを作りたいです

アンドロイド:configChanges = "ロケール|オリエンテーション"

まだ解決できません。私は私が向きを変えたときに、システムが、私は

Locale locale = new Locale("ar"); 
       Locale.setDefault(locale); 
       Configuration config = new Configuration(); 
       config.locale = locale; 
       getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics()); 

を使用して、それを設定しようとした場合でも、私は、ユーザーの待機を行いますどの活動を終了し、再度開く必要がありますので、独自の言語を変更することを考えますさらに、ユーザーが向きを変更しようとすると、アプリケーションがクラッシュする可能性があります。

私はonRetainNonConfigurationInstance()を使用するかもしれませんが、私はこれらのことをどのように処理する必要があるのか​​分かりません。だから、どんな助けもありがとう。

答えて

0

私は今推測していますが、多分あなたは、設定の変更後は、ロケールを復元するために

onSaveInstanceState(Bundle) 

onRestoreInstanceState(Bundle) 

を使用することができます。

+0

私はそうしようとしました。しかし、私はonRestoreInstanceState(Bundle)で自分自身でロケールを設定した後で、アクティビティを終了してもう一度やり直すと、サーバーからデータを再度ロードするようになります。私は正しい? – FAFI

+0

おそらく私はあなたの質問を正しく得ていませんでした。したがって、設定変更よりもサーバーからロードしたデータも保持したいのですか? [進行状況ダイアログとオリエンテーションの変更を処理する] http://blog.doityourselfandroid.com/2010/11/14/handling-progress-dialogs-and-screen-orientation-changes/をご覧ください。溶液。 –

+0

私はこの方法で方向の変更を処理していました。しかし、今私はロケールの変更を扱う以外にこれを処理しなければならず、これを解決するためにonRetainNonConfigurationInstance()を使用する方法を理解できません。 onRetainNonConfigurationInstance()を使用してasyncTaskとロケールを保存するにはどうすればよいですか? – FAFI

0

構成が変更されるたびに、正しい(構成に依存する)リソースを指す新しいResourcesオブジェクトが作成されます。したがって、以前のリソースオブジェクトへの変更はすべて破棄されます。

onCreate()が呼び出されるたびにロケールを再設定する必要があります。

アドバイスとして、実際にすべての結果を理解し、それを使用する強い理由がない限り、android:configChangesを使用しないでください。詳細はHandling Runtime Changesをよく読んでください。

もう1つのヒントは、AsyncTaskを専用サービスに移行することをお勧めします。このような「バックグラウンド」タスクではサービスがよりよく採用され、より多くのコードが必要になりますが、構成の変更をよりうまく処理するため、構成の変更を受けても有効なAsyncTaskを使用する場合は、非常に注意する必要があります。私はActivitesの背景スレッドについて2つの投稿を書いた:part 1part 2

0

フラグメントを使用している場合は、自分自身を保持するFragmentAsyncTaskを入れることを検討してください。タグ付きで追加すると、onCreateで再度検索できます。

私は今それを見つけるのに苦労していますが、これはGoogle's I/O appで使用されていると思います。

関連する問題