2012-01-16 12 views
2

私は多くのボタンで主なアクティビティを持っています。各ボタンが別のアクティビティを開始しています。 これらのアクティビティの1つ(MyPuzzlesActivitiyと呼ばれます)には、作業のためにインターネットサーバーからロードする必要があるメンバがあります。 (このメンバーはインターネットからロードするパズルのリストです) このメンバーの現在の位置はアクティビティです。 でも、ユーザーが実際にアクティビティを開始するボタンを押す(インターネットサーバーからの応答を待っている)時間を節約する前に、ロードしたいと思います。アクティビティを開始する前にアクティビティメンバーを読み込みます。

私はこのメンバーを静的にしてメインのアクティビティから開始することを考えましたが、少し醜いようです。 誰かがこの問題を解決するための良いアイデアを持っていますか?

ありがとう。

+0

???これらのどちらも該当しない場合(または、ダウンロードに関する問題を引き起こした他の要素)、ユーザーは主要なアクティビティであろうとパズルの活動であろうと、ダウンロードが完了するのを待たなければなりません。 「目にしばらくお待ちください...」ダイアログなど、ユーザーにリアルタイムのフィードバックを提供する方が、目に見えない方法で時間を費やすことを試みるよりも、特に失敗する可能性が高い場合は、はるかに優れています。 – Squonk

答えて

0

あなたは正しいです、この場合静的です。

アプリケーションに保存することができます。まず、Applicationをカスタムクラス(class MyApplication extends Application)にサブクラス化し、マニフェスト(application name="...package...MyApplication")で宣言する必要があります。

次に、任意のアクティビティからデータを格納し、必要に応じて取得することができます。あなたのアプリがアクティブである限り、あなたのデータは利用可能になります。パズルのリストをメインアクティビティからロードしてアプリケーションに保存します(保存したいデータの種類についてはMyApplicationにセッターとゲッターを追加してください)、他のアクティビティのonCreateから取得してください。

public class MyApplication extends Application { 
    private List<Puzzle> puzzles; 

    public void setPuzzlesList(List<Puzzle> puzzles) { 
     this.puzzles = puzzles; 
    } 

    public List<Puzzle> getPuzzlesList() { 
     return puzzles; 
    } 
} 

そして、あなたの主な活動から:

((MyApplication) getApplication).setPuzzlesList(..load your list of puzzles from your service...); 

MyPuzzlesActivity中:ネットワーク接続がありません場合は、サーバがどのようなダウンしている場合はどう

final List<Puzzle> puzzles = ((MyApplication) getApplication).getPuzzlesList();