Fragment越来越多的被开发者使用,估计即将成为一种趋势。最近被很多人问关于fragment的跳转问题,再加上本人也研究了很多fragment的用法,看了关于fragment的大部分API,特在此说下本人的菜鸟看法
实现一:简单的从一个fragment中跳转到另一个fragment,按返回键返回上一个fragment
1、实现效果图
项目结构图
MainActivity.java
package com.xwj.fragmenttest1;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
public class MainActivity extends FragmentActivity {
private FragmentManager fragmentManager;
private FragmentTransaction fragmentTransaction;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
fragmentManager = getSupportFragmentManager();
fragmentTransaction = fragmentManager.beginTransaction();
FragmentTest1 fragmentTest1 = new FragmentTest1();
fragmentTransaction.replace(R.id.fragment_main, fragmentTest1,
"fragmentTest1");
fragmentTransaction.commit();
}
@Override
public void onBackPressed() {
if (fragmentManager.findFragmentByTag("fragmentTest1") != null
&& fragmentManager.findFragmentByTag("fragmentTest1")
.isVisible()) {
System.out.println("12");
MainActivity.this.finish();
} else {
super.onBackPressed();
}
}
}
注:FragmentActivity的FragmentManager是处理Fragment Transaction的而不是处理Fragment
FragmentTransaction默认并不会主动被加入到BackStack中,需要调用addToBackStack(String tag)方法。参数'fragmentTest1'作为本次加入BackStack的Transaction的标志
和addToBackStack相对应的接口方法是popBackStack()和popBackStackImmediate()
FragmentTest1.java