2016-11-30 3 views
1

я определил следующий заголовок для фрагмента:Как получить контекст внедренного обратного вызова внутри метода фрагмента

public class AllVideosFragment extends Fragment implements AutomaticCallback{ 

Внутри этого фрагмента, у меня есть следующая функция для обработки кок:

// Listener called when spinner item selected 
     spinnerLanguages.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
      @Override 
      public void onItemSelected(AdapterView<?> parentView, View v, int position, long id) { 
       // Get selected row data to show on screen 
       String language = ((TextView) v.findViewById(R.id.tvSpinnerRow)).getText().toString(); 

       if(language.equals(getString(R.string.str_en))) 
        Hawk.put(Config.TV_LANGUAGE, "en"); 
       if(language.equals(getString(R.string.str_es))) 
        Hawk.put(Config.TV_LANGUAGE, "es"); 

       //We need to retrive data again 
       new AutomaticRequest().getLives(String.valueOf(Hawk.get(Config.TV_LANGUAGE)), **CONTEXT OF THE CALLBACK**); 
      } 

      @Override 
      public void onNothingSelected(AdapterView<?> parentView) { 
       // your code here 
      } 

     }); 

Если я бы метод вне методы вертушки ручки, я мог бы использовать «это», но внутри я не знаю, что мне нужно использовать.

new AutomaticRequest().getLives(String.valueOf(Hawk.get(Config.TV_LANGUAGE)), this); 

Какой метод мне нужно позвонить взамен «этого»?

Благодарим за помощь.

+0

getactivity() использование. –

ответ

2

Вы находитесь в анонимной области, и this будет ссылаться на область действия. Если вы хотите передать внешний this вы должны явно назвать его в этом случае

AllVideosFragment.this 
+1

Спасибо Murat – MAOL

-1

ответ:

new AutomaticRequest().getLives(String.valueOf(Hawk.get(Config.TV_LANGUAGE)), getActivity().this); 
+0

Пожалуйста, снова прочитайте вопрос ... – Selvin

1

Это даст вам контекст текущего CallBack, в FragmentName.this будет относиться к контексту фрагмента, а getActivity() относится к контексту деятельности, на котором ваш фрагмент приютили. Для вашей легкости просто сделайте Context context в глобальной области, инициализируйте его в методе onViewCreated() фрагментов и используйте его в любом месте вашего фрагмента.

+0

Не могли бы вы уточнить, как я могу улучшить этот ответ? Или что было скрыто под вопросом? –

+0

Также, пожалуйста, прочитайте один раз, когда нужно дать отрицательный рейтинг любому ответу. Но спасибо :) –

+0

извините, я был слепым :) ... в следующий раз отметьте код ... :) и все о контексте - это nocesery – Selvin

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