以下是簡單的範例
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功能蠻像的
就是回到前一頁


沒有留言:
張貼留言