2011-07-20 17 views
3

私はまだ、メニューとツールバーでレイアウトを使用し、アンドロイドでアクティビティを展開または開始するための最良のソリューションを探しています。私の質問は混乱して聞こえるかもしれませんが、例で説明しようとしています。ベストプラクティスのアクティビティ - アンドロイドでの切り替えと表示の変更

イムプログラミングに(私は本当に驚き...)のAndroidアプリを言うことができます

私のアプリは次の操作を行うことができます:

  1. ユーザーは、[3]または登録してログインすることができます[2]。ログインすると、新しいアクティビティが開始され、ダッシュボードが表示されます。登録した場合:登録プロセスのアクティビティが開始されます。
  2. 登録プロセス:ユーザーが希望するユーザー名とパスワードを入力し、ボタンを押して受け入れます。彼のデータは形式検証され、有効であれば彼の設定を選択できる新しい活動が始まります。バックボタンの動作とデータは新しいアクティビティに渡すことができます。最後の登録画面が保存され、ダッシュボードが開始されます。新しいアクティビティの開始は楽しいです!
  3. 今、それは複雑になります。 Dasboardには「アクションバー」(上部)と「ツールバー」(下部の、タブのような)があります。したがって、ビューポートの中央部分(現在はメインビュー)からすべてを表示する必要があります。 。。これ以上の活動はカントー、:(切り替え は、現在、各tabclickメインビューからすべてのビューを削除し、新しいビューが追加されます素晴らしい見て、アニメーションすることはできないと除き魅力ように動作します。その現在ないダイナミック

だから私は最良の方法を解決する方法がわかりません。たとえば、Webサービスからデータを取得し、そこからリストビューを作成して、リストアを拡張しています。メインビューに入れるにはどうすればいいですか? それは効率的ですか?

私は練習中です。実際に私が始めたいと思う最初の小さな議論です。 )

更新日: 私は、活動を開始し結果を得る興味深い方法を見てきました。 Launching activity through intents 。アクティビティの開始後に新規/更新ビューを挿入することは可能ですか?私は別の活動で私の結果を生成します。ビューを更新します。 「ダッシュボード」に戻り、更新されたばかりのビューを読み込みます。可能?それとも効率が悪いですか?そして、別のアクティビティからビューを更新するにはどうしたらいいですか?私は学ぶ必要があるので、多くのがあります:/

アップデート2: それを行ったアプリの良い例:Google+の 私は自分のソースコードを持っていないのが残念;)

Update3とは: ベストは何ですか?

  • 負荷新しい活動、アニメーション、セット選択ツールボックス]タブ+ 無効戻るボタンの機能を無効に
  • startActionForResults、結果を取得し、現在のビューを更新します(まだ実際にそれが可能になる方法がわからない)
  • viewFlipper onflipの変更+反転したビューのデータの更新。

まだ効率的な解決策はありません。または、何か欠かせないものはありますか?私はちょうど私のWebサービスからデータをフェッチするためにListActivityを終了しました。しかし、それはまだ別の活動で実行されます。今、私はそれを私の「メインビュー」に実装できますか? ofcourse ...私はリストを自分のカスタムアダプターに設定できました。しかし、私はリストアを作成すると、現在、サーバーからデータを更新して取り込んでいます。

イムこれは私が買ってあげるだけの答えかもしれない恐れ:Embed external Intent in main Activity

UPDATE4:私が何かをしようとしています。 はニニンホーの答え(!ありがとう)は、次のアプローチを試みるイムに基づいて:

  1. スタートDashboardactivityとViewFlipperを作成します。
  2. 各Toolbarclickは特定のViewFlipperページを表します。
  3. 各ページにはListadapterが実装されており、異なる結果(異なるWebサービスクエリ)を示しています。 (ListView、GridView、プロファイル画像付き、プロファイル画像なし)
  4. ToolbarclickでAsyncTaskまたはServiceを開始し、現在のページのデータが変更されたことを通知します。 (ofcourse IFデータが変更された)。クリックされたページに切り替えます。
  5. updatefeatureを実装します。リストの一番下までスクロールすると、さらにデータを取得して追加します。 5分後に他のリストを自動的に更新する。更新ボタンのクリック時にリストを更新することができます。

これまでのところ:アクティビティ全体のバックパネルスタンドアロン。ページフリップアニメーションが可能です。非同期にリストを更新しても、別のリストに切り替えることは可能です。

CONS: ...誰かがありますか?そのようなアプローチの効率はどうですか? ViewFlipperはすべての情報を保持しているため、パフォーマンスが低下するか、ViewFlipperはビュー(ListViewなど)をリサイクルしますか?

UPDATE5: 私はしばらく時間があれば、ここですべてのことを読みやすく議論します。 )

答えて

1

あなたのアプリを開始したいと思っているものから、インターネットからいくつかのデータを取り出し、メイン画面にこのデータを表示してから。

私はあなただけのデータをフェッチするためにそれを使用したいので、あなたの説明からデータを取得するために第2の活動の必要性を見ていないので、最善のアプローチは、次のようになります。

  1. は1つのアクティビティを作成(ダッシュボード)
  2. バックグラウンドでAsyncTaskまたはサービスを開始して、データを取得します。
  3. フェッチが終了したら、終了したことをアクティビティに通知します。
  4. リストを表示するようにダッシュボードを変更します(アニメーションが必要な場合や、リストを非表示にしてレイアウトを作成してから表示に変更する場合は、ViewSwitcherを使用できます)。

ps:ListActivity以外のListViewを使用することができます.ListAdapterを作成してListViewアイテムを作成し、これをListViewのアダプタとして追加するだけです。

関連する問題