0

ナビゲーションの手段としてスライド メニューを使用するアプリケーションがあります。ナビゲーション メニューを使用して切り替えたい 3 つの主要なフラグメントがあります。現在、これらの 3 つのフラグメントを循環するはずの MainActivity が 1 つあります。問題は、3 つのメイン フラグメントのそれぞれに、クリックすると別のフラグメントを起動し、メイン フラグメントをスタックに配置して戻るボタンがあることです。

1 つのメイン アクティビティを使用して 3 つのメイン フラグメントを交換し、各メイン フラグメントのサブ フラグメントも処理できるように、このナビゲーションを管理するにはどうすればよいですか?

うまくいけば、それは十分に明確でした!

4

2 に答える 2

0

アクティビティでコンテナを使用する必要があります。FragmentManager で Fragments を置き換えることができます。

たとえば、レイアウト アクティビティは次のとおりです。

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/fragmentContainer"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

</FrameLayout>

そしてあなたの活動:

public abstract class SingleFragmentActivity extends Activity {


    protected abstract Fragment replaceContentFragment();


    protected int getLayoutActivity() {
        return R.layout.single_fragment_activity;
    }

    @Override
    public void onCreate(Bundle saveInstanceState) {
        super.onCreate(saveInstanceState);
        this.setContentView(this.getLayoutActivity());
        this.addFragment();
    }


    private void addFragment() {
        FragmentManager fragmentManager = this.getFragmentManager();

        Fragment fragment = fragmentManager
                .findFragmentById(R.id.fragmentContainer);

        if (fragment == null) {
            fragment = this.replaceContentFragment();
            fragmentManager.beginTransaction()
                    .add(R.id.fragmentContainer, fragment).commit();
        }

    }
}

アクティビティを SingleFragmentActivity から継承し、replaceContentFragment メソッドをオーバーライドすることができます。

于 2013-07-24T20:13:47.163 に答える
0

いくつかのオプションがあります。

  • Interfaces
  • プロデュース/サブスクライブOtto

最初のオプションでは、次のInterface on theように Fragment` 側を作成します。

public Temp foo;

public interface Temp
{
    public void tempSelected(int i);
}

次に、MainActivityそのメソッドで Fragment を次のように拡張します。

public class MyMainActivity extends MyFragment.Temp

これにより、Temp が提供するメソッドをオーバーライドする必要があります。

2 番目のオプションは、Subscribe および Produce メソッドで Otto を使用することです。そのための最良の説明はhereです。

お役に立てれば!

于 2013-07-24T20:13:56.560 に答える