2016-03-06 4 views
0

Я новичок в разработке android. Я пытаюсь показать Тост в фрагменте, используя следующий код, который я получил от других сайтов:Невозможно показать тост во фрагменте, используя это

Toast.makeText(this, "count is " + count, Toast.LENGTH_SHORT).show(); 

Но я получаю вопрос в первом параметре. Может ли кто-нибудь помочь?

ответ

2

Вы можете использовать getActivity(), который возвращает активность, связанную с фрагментом. Деятельность - это контекст (поскольку Activity расширяет контекст).

Так что ваш код будет выглядеть следующим образом:

Toast.makeText(getActivity(), "count is " + count, Toast.LENGTH_SHORT).show(); 
0

использование getActivity()

Toast.makeText(getActivity(), "count is " + count, Toast.LENGTH_SHORT).show(); 
0

Если вы видите подпись метода makeText в Toast класса вы можете увидеть, что первый параметр требуется, это контекст.

Фрагмент не является подклассом контекста, поэтому с помощью ключевого слова this вы передаете объект Фрагмент.

Вы должны использовать метод getActivity() или getContext().

Toast.makeText(getActivity(), "count is " + count, Toast.LENGTH_SHORT).show(); 

Если вы хотите знать, разница прочитать этот пост What is the difference between this getcontext and getactivity

1

1) Вы можете использовать getActivity() вместо это ключевого слова. Код будет, как показано ниже,

Toast.makeText(getActivity(), "Count is" + count, Toast.LENGTH_SHORT).show(); 
0

Override фрагменты onAttach (Context) метода и хранить контекст для всех вызовов, который требует контекста.

class MyFragment extends Fragment{ 
    private Context _context; 
    @Override 
    protected void onAttach(Context context){ 
    _context = context; 
    } 

    private void showToast(){ 
    Toast.makeText(_context, "count is " + count, Toast.LENGTH_SHORT).show();` 
    }  
} 

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

  • Нет связанных вопросов^_^