У меня возникли проблемы с определением того, была ли выбрана определенная вкладка на панели навигации. Я пытаюсь определить, была ли выбрана вкладка ингредиента. Каждый раз, когда я запускаю свой код, он возвращает ту ошибку с нулевым указателем, потому что mFragment имеет значение null и не был создан.Сравнение фрагментов с использованием тегов в навигационной панели
Хорошо ... Я понимаю, что mFragment равно null. Я предполагаю, что это то место, где я запутался. При сравнении фрагментов вы сравниваете их контент или сам объект? И если кто-то знает, как сравнить фрагменты, которые были бы замечательными. Заранее спасибо. Вот код:
public static class TabListener<T extends Fragment> implements ActionBar.TabListener {
private final Activity mActivity;
private final String mTag;
private final Class<T> mClass;
private final Bundle mArgs;
private Bundle mTitleArgs;
private Fragment mFragment;
private IngredientCreation ingredientFrag;
private FragmentTabControl controller;
public TabListener(Activity activity, String tag, Class<T> clz) {
this(activity, tag, clz, null);
}
public TabListener(Activity activity, String tag, Class<T> clz, Bundle args) {
mActivity = activity;
mTag = tag;
mClass = clz;
mArgs = args;
// Check to see if we already have a fragment for this tab, probably
// from a previously saved state. If so, deactivate it, because our
// initial state is that a tab isn't shown.
mFragment = mActivity.getFragmentManager().findFragmentByTag(mTag);
if (mFragment != null && !mFragment.isDetached()) {
FragmentTransaction ft = mActivity.getFragmentManager().beginTransaction();
ft.detach(mFragment);
ft.commit();
}
}
public void onTabSelected(Tab tab, FragmentTransaction ft) {
ingredientFrag = (IngredientCreation) mActivity.getFragmentManager().findFragmentByTag("ingredients");
if (mFragment.equals(ingredientFrag)) {
System.out.println("got here");
mFragment = Fragment.instantiate(mActivity, mClass.getName(), mTitleArgs);
ft.add(android.R.id.content, mFragment, mTag);
} else {
ft.attach(mFragment);
}
}