2013-03-13 10 views
8

このトピックに関するいくつかの質問があります(例:https://github.com/jfeinstein10/SlidingMenu/issues/5)が、まだわかりません。私は誰かがこれを明確にできることを願っています。jfeinstein10のスライドメニューリスト項目をクリックしたときにフラグメントを切り替えるのではなく、新しいアクティビティに切り替える

コンテキスト:

私は各画面は、1つまたは複数のフラグメントを含む活動で活動およびフラグメント(すなわち)によって画面を整理アンドロイドアプリを有するhttps://github.com/jfeinstein10/SlidingMenu

を参照してください。 新しい要件は、このライブラリが提供するものに類似したスライドメニューを追加することです。

問題:

右のモデルは、その後イン/アウトの異なる画面に属するフラグメント切り替わりますちょうど1主な活動を持っているだろうことを例と議論から表示されます。実際、著者は上記のスレッドで言及しています。「リスト選択に基づいてアクティビティを起動する場合は、あなたが話しているビューを入れ替える振る舞いを持たないでしょう。アクティビティを上記のビューに入れてください。アクティビティが何であるかを考えるとき、それは実際には意味がありません。 "

なぜ意味がありませんか?明らかに、私はここでポイントを逃しています。

質問:私のプロジェクトは、すでに複数のアクティビティ(各画面に対応するもの)が含まれていることを考えると

は、JUST 1 MAIN活性を有することを再編成するプロジェクトに、その後の私の唯一のオプションで、このライブラリを使用するために、 ?または、スライディングメニューのリストアイテムがクリックされたときに新しいアクティビティを起動する方法はありますか?スライディングメニューの動作を確認してください。[EDIT - 最後の部分を追加する]つまり、既存のアプリデザインでこのライブラリをどのくらい正確に使用するかについて

答えて

4

まず事前に

おかげで、あなたは別の内部Activityを持つことができないとdocsに述べたような活動は、ビューから完全に異なっている:

活動は、単一の、焦点のものであることユーザーが行うことができます。

あなたの質問に答えるには、あなたのアプリの振る舞いに依存します。あなたは、スライドメニューであなたの活動を実施することができますonClosedListenerを実装し、そこから選択された活動に切り替えます。これは、アクティビティを切り替える前にメニューを閉じるアニメーションを提供します。また、メニューから何かを選択するたびに、新しいアクティビティのアニメーションが前面に表示されるので、奇妙な効果が得られます。

私は最良のアプローチは、すべてのスライドメニューオプションの間に「共通の目的」を持つことだと思います。たとえば、自分のプロジェクトの1つでは、ユーザーがさまざまな種類のデータのリストの中から選択できるようにする必要があります。ユーザーがメニューから何かを選択すると、右のコーナーに新しいリストフラグメントがロードされます。そこでは、表示または編集したいアイテムを選択できます。それはアプリのエントリーポイントであり、唯一の場所は私のアプリにスライディングメニューがあるということでした。これは、このUIデザインパターンを実装するすべてのアプリケーションでほぼ同じです。サイドメニューを使って表示するフィードやコンテンツを選択できるgoogle +、current、youtubeを見てください。ユーザーが選択すると、選択したアイテム(g +投稿、ビデオ、ニュース記事、ツイートなど)の新しいアクティビティを開くだけです。

あなたのアプリには、スライドメニューを使用するためのデータなどのリストはありませんが、スライドメニューのアクティビティにはその機能性に関する明確な目標があります。目的。多くの他のアプリには1つの選択肢があるため、スライドメニューがあるのは悪い選択です。特定の目的でそれを使うべきです。また、スライドメニューをどこにでも適用すると、プラットフォームのnavigation patternが妨害され、他のアプリとして動作しないため、全体的なユーザーエクスペリエンスが低下することに注意してください。

+0

私はナビゲートしています。パターンはYouTubeアプリのアクションバーと非常に似ています。そのアクションバーの '上のナビゲーション'はスライドメニューを開きます。あなたは上記のことを言いました - "..選択されたアイテムの新しい活動を開くだけです"。スライディングメニューライブラリは、スライディングメニュー項目の選択において、「フラグメント」(アクティビティではない)を切り替える例を示しています。私は「アクティビティ」を切り替えようと試みたとき、あなたが言及したように、新しいアクティビティの奇妙な効果が前面に来ているのを見ました。残念ながら、上記の私の質問(編集済み)は、既存のアプリケーションデザイン内でこのライブラリをいかに正確に使用するかについては未だに残っています。 –

+0

あなたは、ある種の 'MainActivity'を持っていると仮定します。これは、あなたのアプリケーションのエントリーポイントで、他のアクティビティのルーターとして機能します。そのアクティビティをスライディングメニューのアクティビティに変えてください。フラグメントをロードして、選択したメニュー項目に基づいて異なる種類のコンテンツを参照します。 'MainActivity'にブラウズフラグメントが必要です。これは常に置き換えられます。個々のアイテムを処理する別のアクティビティを開きます。既に働いているアプリケーションがあるので、既存のアクティビティを再利用して各タイプのコンテンツを表示する方が、1つのアクティビティで動作するようにすべてのコンテンツを変更するよりも良い選択肢です。 – ebarrenechea

+0

大丈夫です - これを試してみましょう。 –

2

アクティビティが各画面のビューのメインコントローラであるため、アクティビティを上のビューに配置することは意味がありません。アクティビティはまた、ビューを表示し、フラグメント(これは、独自のビューの有無にかかわらず、ミニコントローラです)を追跡します。上記のビューにアクティビティを配置することは、アクティビティをアクティビティに配置することを意味します。不可能です。

私はあなたのテキストから導き出すことができるから、Androidの開発者ガイドでアクティビティとフラグメント(http://developer.android.com/guide/components/activities.html)を読んで、Androidのコンセプトをよりよく理解することをお勧めします。

は今、あなたの質問に:

私はあなたが達成しようとしているかについては明らかではない午前しかし、あなたはメニューとあなたのアプリは、Google +のアプリ、たとえば、のように動作するかどうそれを行うための一つの方法はにありますアクティビティクラス(またはプロジェクトで使用されたベースアクティビティ)を拡張するベースクラスを実装し、ベースにSlidingMenuを設定させます。次に、メニューがあるはずの各アクティビティで基本アクティビティを単純に拡張します。

あなたはそれを記述することもできますが、神のオブジェクト(http://en.wikipedia.org/wiki/God_object)の古典的な例になります。フラグメントのジャグリングスキルを練習し、新しいアクティビティを開始する代わりにフラグメント間を切り替えることは、ユースケースを持っていますが、それでもいくつかのビューがあるプロジェクトでは推奨しません。

+0

私はすでにあなたが上で提案したアプローチを試していました。メニュー項目のクリックに基づいてフラグメントを切り替えるために@ebarrencheaが提案するアプローチを試してみましょう。あなたのヒントのための高尚! –

1

私が持っていた問題に最も近い答えは、http://www.verious.com/article/polishing-the-sliding-app-menu/です。ページの一番下までスクロールすると、最後のセクション「アクティビティ間のフライインアプリメニューの使用」が表示されます。これは、既存のアプリで多くのアクティビティを持っており、広範な再ファクタリングを避けたい場合には、1つのオプションです。私はまだこれを試していないが、価値があることを認識している。

関連する問題