0

通常、表示したい「画面」ごとに別々のアクティビティを使用し、異なる XML ファイルを使用します。

ただし、jarファイルをAndroidアプリケーションに動的にロードする作業を行っているため、実行時にアクティビティがいくつあるか、または画面がいくつあるかわかりません。

現時点では、Java リフレクションを使用して、動的にロードされた Java ファイルから文字列のリストを返し、各リスト項目を個別のボタンとして画面に描画できます。これらのボタンのいずれかがクリックされた場合、スタックに別の「画面」をロードできるようにしたいと考えています。したがって、この新しい画面から戻ると、それを呼び出した前の画面に移動します。

新しいアクティビティを作成して新しいインテントを渡さずに、もちろん Android マニフェスト ファイルに関連する変更を加えずにこれを行うことは可能ですか?

例としてブラックベリーの機能を使用するには - Android でブラックベリーのプッシュ画面とポップ画面に相当するものはありますか? 画面がプッシュ/ポップしている場所では、単に MainScreen を拡張しますか?

誰か質問がある場合、または私が漠然としている場合は、コメントしてください。自分自身を説明するために最善を尽くします。どんな助けも大歓迎です。

4

4 に答える 4

3

BB のプッシュ/ポップ画面に相当する Android はstartActivity()/finish()です。ViewSwitcherただし、コンテナ ビュー ( @hasanghaforian が提案する など)を使用するかsetContentView()、画面を変更するたびに新しいビュー階層を呼び出すだけで、単一のアクティビティで独自のビューを管理できます。setContentViewを呼び出すと、呼び出しによって取得したビュー参照はすべてfindViewById失効することに注意してください。

于 2012-09-03T21:41:24.327 に答える
0

を使用できますViewSwitcher。ViewSwitcherは、2つのビューを切り替えるViewAnimatorであり、これらのビューを作成するためのファクトリがあります。ファクトリを使用してビューを作成するか、自分で追加することができます。ViewSwitcherは2つの子ビューのみを持つことができ、そのうち1つだけが一度に表示されます。またはを使用することもできますfragments

于 2012-09-03T21:38:25.143 に答える
0

私の意見では、フラグメントを使用する必要があります。文字列を反復処理するコードがあるとします。

for(String def : definitions) {
   Fragment f = new CustomFragment();
   Bundle b = new Bundle();
   b.putString("STRING_DEF",def);
   f.setArguments(b);
   fragments.add(f);
}

上記のコードでは、 のコレクションがFraments作成されています。CustomFragment実装を見てみましょう。

CustomFragment extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
        Bundle savedInstanceState) {
        String def = getArguments.getString("STRING_DEF");
        //write code to create view
        return view;
    }
}

今、あなたListActivityは多かれ少なかれこのようにクリックリスナーを実装する必要があります

public void onListItemClick(ListView l, View v, int position, long id) {
    FragmentManager fragMgr = getFragmentManager();
    FragmentTransaction t = fragMgr.beginTransaction();
    t.replace(R.id.id_of_view_place_holder_for_fragment, 
        fragments.get(position),"FRAGMENT_TAG");
    t.commit();
}
于 2012-09-03T23:03:41.730 に答える
0

同じアクティビティで異なるレイアウトを使用できるかどうかを参照すると、答えはイエスです。

アクティビティはレイアウトに依存しません。マニフェストでアクティビティにレイアウトを割り当てるのではなく、Activity クラスから setContentView() メソッドを呼び出してアクティビティで使用するレイアウトを定義し、レイアウトを設定します。

したがって、いくつかのレイアウト (画面) が必要な場合は、さまざまなレイアウトを定義し、setContentView(R.layout.the layout) を呼び出したいときにそれらを使用するだけです。この呼び出しの後、選択したレイアウトが表示されます。

xml でレイアウトを静的に作成できない場合は、必要に応じて必要に応じてコードで動的に作成できます。

さらに、新しい画面が必要になるたびに、それを構築し、それをスタックにプッシュして setContentView() メソッドを呼び出すことができます。必要がなくなったら、スタックからポップして setContentView( ) スタックの一番上に新しいレイアウトが表示されます。

それがあなたを助けることを願っています

于 2012-09-03T22:40:15.337 に答える