標籤:
FragmentTransaction中先加入一個Fragment,這個Fragment就是當前要顯示的Fragment,
當通過事件觸發顯示第二個Fragment時,在加入第二個Fragment並調用fragmentTransaction.addToBackStack(null);
在onBackPressed方法中調用mFragmentManager.popBackStack();回到第一個Fragment
package com.example.fragmentdemo;import android.app.Activity;import android.app.FragmentManager;import android.app.FragmentTransaction;import android.content.Intent;import android.os.Bundle;import android.util.Log;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class MainActivity extends Activity { private FragmentManager mFragmentManager; private Fragment1 fragment1; private Fragment2 fragment2; private Button button1; private FragmentTransaction fragmentTransaction; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //建立兩個Fragment fragment1 = new Fragment1(); fragment2 = new Fragment2(); mFragmentManager = getFragmentManager(); //Fragment事務 fragmentTransaction = mFragmentManager.beginTransaction(); //增加執行的動畫效果 動畫不能用我們的Tween動畫,後面會有代碼 fragmentTransaction.setCustomAnimations(R.anim.animation_view, R.anim.animation_view_exit); //加入1個Fragment fragmentTransaction.add(R.id.myFrameLayout, fragment1); fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); fragmentTransaction.commit(); button1 = (Button)findViewById(R.id.button1); button1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { fragmentTransaction = mFragmentManager.beginTransaction(); //執行動畫,顯示fragment2 fragmentTransaction.setCustomAnimations(R.anim.animation_view, R.anim.animation_view_exit); if (fragment2.isAdded()) { fragmentTransaction.commit(); }else{ fragmentTransaction.add(R.id.myFrameLayout, fragment2); fragmentTransaction.addToBackStack(null); fragmentTransaction.commit(); } } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override protected void onResume() { super.onResume(); } @Override public void onBackPressed() { super.onBackPressed(); mFragmentManager.popBackStack(); } }
android 中FragmentActivity中類比返回鍵返回上一個Activity效果