2014-11-26 4 views
0

Я работаю над приложением Android, которое реализует NavigationDrawer.Фрагменты ящика Android Android

Навигатор работает отлично, поэтому переходы фрагментов, но я не могу получить доступ к элементам Фрагмента.

Здесь есть код моего ящика onItemClick() слушателя:

ConfigureFragment configure = new ConfigureFragment(); 
Button bt; 
InFragment in = new InFragment(); 
OutFragment out = new OutFragment(); 
ConditioningFragment cond = new ConditioningFragment(); 
private String lft = null; 
@Override 
public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
    selectItem(position); 
    android.app.FragmentManager fragmentManager = getFragmentManager(); 
    FragmentTransaction transaction = fragmentManager.beginTransaction(); 
    switch(position){ 
     case 0: 
      if(lft == null){ 
      transaction.replace(R.id.mainContent,configure,"ConfigureFragment"); 
      transaction.commit(); 
      lft = "ConfigureFragment"; 
      }else{ 
       transaction.replace(fragmentManager.findFragmentByTag(lft).getId(),configure,"ConfigureFragment"); 
       transaction.commit(); 
       lft = "ConfigureFragment"; 
      } 
     bt = (Button)configure.getView().findViewById(R.id.configure_bt); //throws NullPointerException 
     break; 
     case 1: 
      if(lft == null){ 
       transaction.replace(R.id.mainContent,in,"InFragment"); 
       transaction.commit(); 
       lft = "InFragment"; 
      }else{ 
       transaction.replace(fragmentManager.findFragmentByTag(lft).getId(),in,"InFragment"); 
       transaction.commit(); 
       lft = "InFragment"; 
      } 
      break; 
     case 2: 
      if(lft == null){ 
       transaction.replace(R.id.mainContent,out,"OutFragment"); 
       transaction.commit(); 
       lft = "OutFragment"; 
      }else{ 
       transaction.replace(fragmentManager.findFragmentByTag(lft).getId(),out,"OutFragment"); 
       transaction.commit(); 
       lft = "OutFragment"; 
      } 
      break; 
    } 
    drawerLayout.closeDrawer(Gravity.LEFT); 
} 

ответ

-1

String переменные не работают с операторами, как, ==. Вы должны использовать:

stringVariableOne.equals(stringVariableTwo); 

Для того, чтобы проверить, если значение одной переменных (StringstringVariableOne, в данном случае) равно другой String переменного или null (stringVariableTwo, в данном случае).

Пример:

lft.equals(null); 
+0

Что? Если строка равна null, объект имеет значение null, и как вы можете вызвать метод объекта, если объект имеет значение null? Его сравнение lft == null или lft! = Null является правильным способом. – mobilepotato7

+0

Это неправильное представление. При установке значения объекта на «null» сам объект ** НЕ ** становится «нулевым». В этом случае, если значение объекта 'String' установлено' null', он не делает объект 'null' из' String'. Он просто устанавливает ** значение ** объекта 'String' в значение« null ». Я знаю это хорошо, потому что я много страдал из-за всех этих заблуждений. :-) – Brandon

+0

Хорошо, я знаю это, но это не моя проблема. Когда я использую функцию fragment.getView(). FindViewById (R.id.thefragmentitem), я получаю исключение NullPointerException. Зачем? –

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