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;
}
)