標籤:
##一、直接getActivity,使用activity的fragmenttransation的replace彷彿替換
private void changeToAnotherFragment(){
//如果是用的v4的包,則用getActivity().getSuppoutFragmentManager();
FragmentManager fm = getActivity().getFragmentManager();
//注意v4包的配套使用
Fragment fragment = new 目標fragment();
fm.beginTransaction().replace(容器控制項id,fragment).commit();
}
##二、定義回呼函數(推薦)
* 實現步驟
> ####定義回調,並利用回調結果實現功能
1、定義介面,並聲明其包含的方法,
2、定義介面成員變數,
3、定義介面成員變數的get和set方法,主要是set方法,給成員變數賦值,
4、調用,判斷如果成員變數不為空白(null),則調用介面中的方法。
> ####實現回調
1、執行個體化包含回調介面的類,即定義類對象
2、對象調用set方法,將介面回傳
3、實現介面中的方法,注意:該實現只在此處起作用。
##三、舉例
* 定義包含有介面的類
class OneFragment extends Fragment{
private Button btn;
private OnButtonClick onButtonClick;//2、定義介面成員變數
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.frag_one, null);
btn = (Button)view.findViewById(R.id.button);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//4、如果介面成員變數不為空白null,則調用介面變數的方法。
if(onButtonClick!=null){
onButtonClick.onClick(btn);
}
}
});
return super.onCreateView(inflater, container, savedInstanceState);
}
//定義介面變數的get方法
public OnButtonClick getOnButtonClick() {
return onButtonClick;
}
//定義介面變數的set方法
public void setOnButtonClick(OnButtonClick onButtonClick) {
this.onButtonClick = onButtonClick;
}
//1、定義介面
public interface OnButtonClick{
public void onClick(View view);
}
}
* 這樣只要在acitivty中設定回調即可
public class MainActivity extends Activity {
//1、執行個體化類對象
private OneFragment oneFragment = new OneFragment();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//。。。
//。。。省略代碼
//2、調用對象的set方法,回傳介面對象
oneFragment.setOnButtonClick(new OnButtonClick() {
//3、實現介面對象的方法,
@Override
public void onClick(View view) {
//切換到TwoFragment
fm.beginTransaction()
//替換為TwoFragment
.replace(R.layout.fragment_container,new TwoFragment())
.commit();
}
});
}
}
Android -------- 從一個Fragment跳轉到另一個Fragment