ActionBarSherlockを使用していますが、アクティビティからSherlockFragmentを拡張するクラスに移動できません。
アクティビティからフラグメントクラスに移動する必要があります
これが私のアクティビティクラスです
Intent notificationIntent = new Intent(context,MessagesFragment.class);
そしてフラグメントクラスは
public class MessagesFragment extends SherlockFragment implements
OnItemClickListener {
// Layout parameters declaration
private PullToRefreshListView lv_messages;
private ImageView iv_no_data;
private LinearLayout ll_bg;
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
getSherlockActivity().getSupportActionBar().setDisplayOptions(
ActionBar.DISPLAY_SHOW_CUSTOM);
getSherlockActivity().getSupportActionBar().setDisplayHomeAsUpEnabled(
true);
getSherlockActivity().getSupportActionBar().setHomeButtonEnabled(true);
getSherlockActivity().getSupportActionBar().setDisplayShowHomeEnabled(
true);
getSherlockActivity().getSupportActionBar().setCustomView(
R.layout.header);
getSherlockActivity().getSupportActionBar().setBackgroundDrawable(
new ColorDrawable(Color.parseColor("#009fe3")));
TextView txt = (TextView) getActivity().findViewById(
R.id.tv_title_header);
Typeface font = Typeface.createFromAsset(getActivity().getAssets(),
"georgia.ttf");
txt.setText("MESSAGES");
txt.setTypeface(font);
return inflater.inflate(R.layout.listview_refreshable, null);
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
.
.
.
.
}
switchfragment
メソッドを使用すると、FragmentChangeActivity
に多くのエラーが表示されます
private void switchFragment(Fragment fragment) {
if (getActivity() == null)
return;
if (getActivity() instanceof FragmentChangeActivity) {
FragmentChangeActivity fca = (FragmentChangeActivity) getActivity();
fca.switchContent(fragment);
}
}
FragmentActivityを拡張するクラスを作成し、そこでフラグメントを開始する必要があります
public class MessagesFragmentActivity extends SherlockFragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState == null){
getSupportFragmentManager().beginTransaction()
.add(Android.R.id.content, new MessagesFragment ()).commit();}
}
}
フラグメントコンストラクター。
public YourFragment() {
}
次に、アクティビティを呼び出すことから、通常の方法でフラグメントアクティビティを開始します
Intent i = new Intent(YourActivity.this,MessagesFragment.class);
startActivity(i);
FragmentTransaction
を使用して、必要なフラグメントに移動します。複数のフラグメントがある場合、このメソッドはそれらを切り替えます。
方向は次のとおりです。
public enum FragmentsAvailable {
HISTORY
}
public class MyActivity extends FragmentActivity
...
private void changeFragment(Fragment newFragment, FragmentsAvailable newFragmentType, boolean withoutAnimation) {
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
try {
getSupportFragmentManager().popBackStackImmediate(newFragmentType.toString(), FragmentManager.POP_BACK_STACK_INCLUSIVE);
} catch (Java.lang.IllegalStateException e) {
}
transaction.addToBackStack(newFragmentType.toString());
transaction.replace(R.id.fragmentContainer, newFragment);
transaction.commitAllowingStateLoss();
getSupportFragmentManager().executePendingTransactions();
}
それをしてはいけない。すべてのフラグメントがアクティビティに含まれているため、そのフラグメントを含むアクティビティにジャンプできます。
フラグメントはアクティビティに添付されます。フラグメントを追加するか、フラグメントをFragmentTransitionに置き換えることができます。フラグメントが存在するにはアクティビティが必要であることに注意してください!
アクティビティからフラグメントに移動することはありません...ただし、フラグメントを含むアクティビティにいる場合は、最初のアクティビティの上に新しいアクティビティを開くことができます。