Fragmentを使う

1911 ワード

プログラム内でジャンプするときはActivityではなくFragmentを使いますが、Activityは比較的重量のあるコンポーネントです.MainActivityでジャンプして、まずPlace HolderFragmentをActivityに追加します.public class MainActivity extends Apple ComppatActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    if (savedInstanceState == null){
        getSupportFragmentManager().beginTransaction().add(R.id.container,new PlaceholderFragment()).commit();
    }
}
ここのcontainerはMainActivityのidです.Place HolderFragmentでジャンプを実行します.public class Place HolderFragment extens Fragment{
public PlaceholderFragment() {

}

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    View rootView = inflater.inflate(R.layout.fragment_main, container, false);


    rootView.findViewById(R.id.btnShowAnotherFragment).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            getFragmentManager().beginTransaction()
                    .addToBackStack(null)
                    .replace(R.id.container,new AnotherFragment())
                    .commit();
        }
    });


    return rootView;
}
ここのaddToBackStockは後退スタックに追加されています.そうでないと帰れないです.replaceはジャンプ方式です.他のスタイルもあります.Another Fragmentでコードでリターンができます.public class Another Fragment extendandroid.support.v.fragment{
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {

    View root = inflater.inflate(R.layout.fragment_another,container,false);
    root.findViewById(R.id.btnBack).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            getFragmentManager().popBackStack();
        }
    });
    return root;
}
)