ActivityがFragmentにジャンプする方法
1844 ワード
詳細
Activityは直接Intentでfragmentをジャンプすることはできないので、例外的な方法で処理します.
ちょうど私のActivityにはgridViewがありますが、このgridViewは中の画像をクリックすると、適切に対応するfragmentにジャンプします.
私の方法はまず新しいActivityにジャンプして、それからこのActivityに基づいてジャンプします.
以下はandroidコードです.これはジャンプ中継のクラスです.このクラスのFrameLayoutを利用して、直接fragmentをロードします(実はfragmentをActivityにネストしています).しかし、クラス名をこの中継クラスに渡します.
Activityは直接Intentでfragmentをジャンプすることはできないので、例外的な方法で処理します.
ちょうど私のActivityにはgridViewがありますが、このgridViewは中の画像をクリックすると、適切に対応するfragmentにジャンプします.
私の方法はまず新しいActivityにジャンプして、それからこのActivityに基づいてジャンプします.
以下はandroidコードです.これはジャンプ中継のクラスです.このクラスのFrameLayoutを利用して、直接fragmentをロードします(実はfragmentをActivityにネストしています).しかし、クラス名をこの中継クラスに渡します.
public class MyFragment extends FragmentActivity {
public String className = "";
public FrameLayout frameLayout;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.sys_chg_fragment);
init();//
getValue();//
if(StringUtils.isNotEmpty(className)){
// Fragment, ,
FragmentManager fm = getSupportFragmentManager();
// Fragment
FragmentTransaction transaction = fm.beginTransaction();
try{
Class> fragClass = Class.forName(className);//
Object obj = fragClass.newInstance();
Fragment fragment = (Fragment)obj;// Fragment
//
transaction.replace(R.id.chg_fragment$framelayout, fragment);
transaction.commit();
}catch(Exception e){
Logger.error("##############", e, "class error");
}
}
}
public void init(){
//
frameLayout = (FrameLayout)findViewById(R.id.chg_fragment$framelayout);
}
//
public void getValue(){
Intent intent =getIntent();
className = intent.getExtras().getString("className");
}
}