2012-05-15 2 views
1

У меня возникли проблемы с определением того, была ли выбрана определенная вкладка на панели навигации. Я пытаюсь определить, была ли выбрана вкладка ингредиента. Каждый раз, когда я запускаю свой код, он возвращает ту ошибку с нулевым указателем, потому что 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); 
     } 
    } 

ответ

Смежные вопросы