インテントのエクストラとして渡されActivity
たクラスをロードするために1 つだけを使用することをお勧めします。Fragment
この解決策は機能しますが、それが良いパターンかどうかはわかりません。このアプローチを使用したいのは、(現時点では) 各 Fragment が Activity であるためです。したがって、Fragment ごとに Activity を作成することは避けたいと考えています。
これが私の唯一の活動の例です:
public class GenericActivity extends FragmentActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.onepane);
if (findViewById(R.id.fragment_container) != null) {
if (savedInstanceState != null) {
return;
}
String fragmentToLoadName;
try{
fragmentToLoadName = getIntent().getExtras().getString("FRAGMENT");
}catch(NullPointerException e){
FragmentHelper.add(R.id.fragment_container, new MainFragment(),
MainFragment.class.getName(), getSupportFragmentManager());
}
if(fragmentToLoadName!=null){
Class fragment_to_load_class = null;
try {
fragmentToLoadClass = Class.forName(fragmentToLoadName);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
FragmentHelper.add(R.id.fragment_container, (Fragment) fragmentToLoadClass.newInstance(),
fragmentToLoadName, getSupportFragmentManager());
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}