4

アプリケーションで動的フォームを作成したいのですが、フォームの数は実行時に決定されます (1 から n)。これを実装するために、Activity を拡張する From クラスを作成します。私のアプリケーションは、この Form クラスの複数のインスタンスを持ち、ある From から別の From に移動できます。

同じクラス(クラスから)の複数のインスタンス間で実装および通信する最良の方法は何ですか?

2 つのフォーム間で通信する方法 (Intent を使用して..?)。

また

もう1つのオプションは、すべてのフォームに対して1つのアクティビティ[アプリケーションとして]を取り、同じアクティビティですべてのフォームをレンダリングすることですか?

4

3 に答える 3

1

さまざまなフォームに複数の独立したアクティビティを用意することは、エンド ユーザーの観点からは最も明白な方法ではない場合があります。それらをグループ化するために TabLayout を検討することも、FrameLayout とメニュー スイッチャーを検討することもできます。

どちらの方法でも、情報交換が簡素化されます。FrameLayout を使用する場合、すべてが同じアクティビティになるため、問題は簡単になります。TabLayout を使用する場合 (おそらく最良の選択)、パブリック ArrayList を TabActivity クラスに格納できるため、交換が非常に簡単になります。

独立したアクティビティ パスをたどる場合に考慮すべきその他のオプションは、インテントのエクストラです (たとえば、1 つのエクストラはフォーム番号であり、もう 1 つのエクストラは送信されるデータである可能性があります)。次に、アクティビティは if/else ブロック内でこれらのエクストラを処理して、エクストラのフォーム番号をプライベート フィールドと比較します。

最後に、データを Application インスタンス (常に 1 つのインスタンス) に格納し、各アクティビティからアクセスできます。

于 2011-06-09T13:51:00.633 に答える
0

もう 1 つの選択肢は正しいものです... 1 つのアクティビティを使用し、そのコンテンツを更新して、現在焦点を当てているものと一致させます。これにより、アプリケーション内およびシステム リソースのオーバーヘッドが大幅に削減されます。

于 2011-06-09T13:42:19.867 に答える
0

2番目の解決策は、さまざまなアクティビティを実装する代わりに提案する「正しい方法」のように聞こえると思います。必要な現在のフォームの表現である「ウィジェット」のような複数のビューを作成するためのより良い解決策です。

とにかく、Activity 間で通信したい場合は、Handler-Objects を介してこれを行うのが最善の方法だと思います。これらのハンドラーは、定義できるメッセージを処理し、内部に多くのデータを入れることができます。

于 2011-06-09T13:53:36.910 に答える