以下是簡單的範例
MainActivity.java
public class MainActivity extends Activity implements myFragment.OnClickListener{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); myFragment newFragment = new myFragment(); FragmentTransaction transaction = this.getFragmentManager().beginTransaction(); transaction.add(R.id.rela, newFragment, "first"); transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); transaction.commit(); } public void onClick() { Log.d("Ted","what"); NxtFragment newFragment = new NxtFragment(); FragmentTransaction transaction = this.getFragmentManager().beginTransaction(); transaction.replace(R.id.rela, newFragment); transaction.addToBackStack(null); transaction.commit(); }
首先 我們在myFragment的class 裡面製做了一個介面 myFragment.OnClickListener
當click event被觸發時 來呼叫切換的動作
在onCreate裡 我們將myFragment 加入至 Main page 裡
onClick 當click事件被觸發時 將 Main page裡的 fragment做更換
myFragment.java
public class myFragment extends Fragment { OnClickListener mCallback; public interface OnClickListener { public void onClick(); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public void onAttach(Activity activity) { super.onAttach(activity); try { mCallback = (OnClickListener) activity; } catch (ClassCastException e) { throw new ClassCastException(activity.toString() + " must implement OnClickListener"); } } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.fragment_layout, container, false); Button btn = (Button)v.findViewById(R.id.ClickBtn); btn.setOnClickListener(new Button.OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub mCallback.onClick(); } }); return v; }在onAttach 裡將 MainActivity 傳給 myFragment
使 myFragment能在 click event被觸發時能呼叫 onClick 的method 來做換頁的動作
以下是這個範例的示範圖
這是第一頁 當按下 Click me 之後會跳至第二頁
按下之後的結果
小結:
1.Fragment 使 Developer在製作手機與平板之間的UI時 相對上較便利
如上範例所示兩個fragment之間的切換
假設在平板上一個是在左邊一個是在右邊 在手機上變成第一頁另一個變成第二頁
用fragment 只需要判斷 是要將fragment add到 R.id.rela (平板) 還是 replace掉(手機)
2.Fragment 支援 Back的功能 這跟windows metro 的 navigate back功能蠻像的
就是回到前一頁
沒有留言:
張貼留言