2011-07-21 7 views
1

私は、巨大なxmlを解析して、アクティビティAのリストビューにタイトルのリストを表示しています。しかし、同じXMLにはリスト項目の詳細があります(リストメールの件名/メールの表示詳細シナリオ)。とにかくStartActivityを実行せずにアクティビティスタックに追加するには?

このリストのクリックイベントでは、バンドルで新しいアクティビティを読み込み、同じXMLを解析して詳細なビューを表示したいのですが、アクティビティA自体に必要なデータがあります。

XMLで表示レイアウトを非表示にして、必要に応じてこれを行う方法を考えましたが、戻るボタンの処理が問題です。おそらくボタンアクションを取り戻すことでこれを行うことができますが、これに対してより良い解決策があるかどうかを知りたいと思っています。

Aへのインテントを(A自体から)ブロードキャストし、それを何らかの形でアクティビティスタックに追加するようにします。

質問が重複している場合は、私が検索したときに見つかりませんでした。

ところで、私はデータベースキャッシングで解決策を実行したくありません。

答えて

1

バックプレスを処理するのが最も簡単な方法です。

これ以外の場合は、情報を2番目のアクティビティのインテントとして表示することもできます。

もう1つの可能性は、ローカルサービスをバックグラウンドで実行し、XMLのロードとその情報への便利なアクセスを提供することです。

独自のApplicationオブジェクトにXMLコンテンツを埋め込むこともできます。しかし、私はいくつかのプロジェクトでそのオプションをあまりよく経験していませんでした。

+0

@ back press-agreedは解決策ですが、より良い方法がありますか?新しいアクティビティを呼び出すと、アプリのxmlを再度解析することを意味します。私はそれを避けたいです。 – mays

+0

回答済み... –

+0

便利な方法で情報へのアクセスを提供しています - >静的なメンバーにキャッシュすることを意味しますか?他のアイデア? stuff XMLコンテンツ - >このプロジェクトの可能なオプションではありません – mays

1

私はバックプレスを扱います。あなたがどのビューであるかを示すアクティビティ内のフラグを使用します(詳細ビュー内に戻ると、全体ビューが表示されます)。

もう1つの方法は、applicationContextに値を保存することです。データベースの使用法よりもずっと簡単です。 ここで答えを見てください:How to declare global variables in Android?

しかし、私は間違いなくバックプレスの取り扱いに行きます。私はレイアウトで同じリストビューを使用する代わりに、ユーザーがどの詳細ビューに応じて異なるアダプタを使用するか、これに似た解決策があります。

+0

私はこれと似た解決策を持っています - >これを共有すれば心? BTW。ユーザーフレンドリーなバックアクションの実装を行うために、バックボタンソリューションと履歴マネージャの実装を進めました。すぐにこれらの詳細を掲載します。あなたの返信ありがとう – mays

+0

申し訳ありませんが、私はそのコードを更新し、それを削除しました。 onKeyBackをオーバーライドしました。その変数の値をチェックして、アクティビティを終了するか、単にlistview.setAdapter(firstAdapter)を入れてアダプタを変更します。 –

0

このリストのクリックイベントでは、バンドルを使って新しいアクティビティを作成し、同じXMLを解析し、詳細ビューを表示しますが、アクティビティA自体に必要なデータがあります。

静的データメンバーに解析されたXMLをキャッシュします。データを必要とするアクティビティは静的データメンバーを最初に見て、そのキャッシュが存在しない場合にのみ解析を開始します。

IOW、これは活動上の問題ではなく、データモデルの問題です。あなたのデータモデルでより良い仕事をして、あなたの活動は自然に振る舞います。

+0

これに同意します。データ処理の問題のように見えます。また、別のアクティビティを使用する方がより良いIMOかもしれません。 –

1

私は2番目のアクティビティを使用します。追加のデータ(連絡先リスト、メッセージの詳細など)を渡して表示します。解析されたXMLをどのようにしてメモリに保存するかは、あなたが決めるべきです(静的メンバーですか?yuck!でも動作します)。

元のアクティビティに戻ります。あなたのソースXMLは大きく変化しますか?たぶんあなたはそれを解析し、すべてのデータをDBに入れて、必要な(そして階層的な)データをより早く取り出すことができるかもしれません。こうすることで、たくさんのデータをメモリに保存し直したり、再解析したりして検索を高速化することができます。

+0

DidntはDBアプローチでもある第2のアクティビティを実行します。レイアウトの非表示/表示と戻るボタンのアプローチで解決しました。お返事をありがとうございます – mays

関連する問題