0

Eclipse にデフォルトの Android プロジェクト レイアウトがあります。「dummyText」と上部にスイッチャーが付属する現在のもの。(ウィザードでそれを選択しました。)

上部のセレクトバーで画面を切り替えたい。メイン、設定、および結果の間。
現在のアクティビティを検出するにはどうすればよいですか?

なぜなら..次のようなスイッチがある場合:

switch (getArguments().getInt(ARG_SECTION_NUMBER)) { ... }  

現在の画面が一番上で選択されている場合、無限ループに入ります。
(例: 値 1 = メイン画面。アプリケーションを開くと、値は 1 です。それはメイン画面にあります。メイン画面が無期限に何度も開きます。2 などの他の値を選択すると、適切な画面に移動すると、ループしません。)

これを修正するにはどうすればよいですか?
(新しいインテントで別のアクティビティを開き、startActivityForResult(...).

更新 #1:
スイッチは、で作成される「DummySectionFragment」に入りましたonNavigationItemSelected

次のようになります。

Fragment fragment = new DummySectionFragment();
    Bundle args = new Bundle();
    args.putInt(DummySectionFragment.ARG_SECTION_NUMBER, position + 1);
    fragment.setArguments(args);
    getSupportFragmentManager().beginTransaction()
            .replace(R.id.container, fragment).commit();  

つまり、基本的にそれは正しいように見えます... 私には。スイッチがアクティブになり、対応する値がダミーに送信され、スイッチは適切なアクティビティを起動するように機能します。現在のアクティビティが「呼び出される」ものと一致する場合、アプリは何もしないというifステートメントを書くだけです。

これをどのように実装すればよいですか?
(コードが少し乱雑であることはわかっています。サンプルは Google のせいです。)

私が使用した Google の例/コードに慣れていない場合は、https : //gist.github.com/anonymous/4edaefa42dd1be96e6e4 をご覧ください。

それは「空白のアクティビティ」->「ドロップダウン」です。

4

1 に答える 1

2

サンプルを意図したとおりに使用していないと思います。1 つの方法は、スイッチを に配置し、その中で、選択したアイテムに応じてonNavigationItemSelected( ではなく) 正しいフラグメントを起動することです。DummySectionFragment

したがって、このサンプルは Fragments に基づいて構築されているため、新しいアクティビティを起動する代わりに、さまざまなセクションに使用する必要があります。

もう 1 つの方法は、 をDummySectionFragment使用しARG_SECTION_NUMBERてどのレイアウトを膨張させるかを決定し、セクションごとに異なるレイアウトを膨張させることです。いずれにせよ、セクションごとに新しいアクティビティを起動することは、このサンプルが想定されている方法ではありません。

編集:フラグメントを操作するための優れたガイドは次のとおりです。

http://developer.android.com/training/basics/fragments/index.html

http://developer.android.com/guide/components/fragments.html

于 2013-04-24T12:51:28.710 に答える