2014-11-07 4 views
0

У меня есть простой пользовательский тост, его работа прекрасна в классе экстентов, но в фрагментах У меня проблема. метод findviewbyid не работает в фрагментах !!
Как я могу это исправить?пользовательский тост во фрагменте

LayoutInflater inflater = getLayoutInflater(); 
    View layouttoast = inflater.inflate(R.layout.customtoast, (ViewGroup)findViewById(R.id.toastcustom)); 
    ((TextView) layouttoast.findViewById(R.id.texttoast)).setText(message); 

layouttoast.findViewById(R.id.imagetoast)).setBackgroundResource(R.drawable.icon); 



    Toast mytoast = new Toast(getBaseContext()); 
    mytoast.setView(layouttoast); 
    mytoast.setDuration(Toast.LENGTH_LONG); 
    mytoast.show(); 

ответ

5

Вы должны поместить свой код под onCreateView способом Fragment, а затем вызвать findViewById метод с точкой зрения, что фрагмент надувается, как это:

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    View parent = inflater.inflate(R.layout.your_fragment_layout, container, false); 

    View layouttoast = inflater.inflate(R.layout.customtoast,(ViewGroup)parent.findViewById(R.id.toastcustom)); 
    ((TextView) layouttoast.findViewById(R.id.texttoast)).setText(message); 

    layouttoast.findViewById(R.id.imagetoast)).setBackgroundResource(R.drawable.icon); 



    Toast mytoast = new Toast(getBaseContext()); 
    mytoast.setView(layouttoast); 
    mytoast.setDuration(Toast.LENGTH_LONG); 
    mytoast.show(); 
    return parent; 
} 
+0

хороший ответ, но что делать, если у меня есть asyncktask..and в моей asynctask я хочу использовать пользовательские тосты .. вы можете помочь мне с этим? –

+0

Является ли ваша AsyncTask внутри фрагмента? – rom4ek

+0

после возвращения parent..i created asyncktask .. –

0

Попробуйте это одно и изменить расположение и идентификатор соответственно:

LayoutInflater inflater1 = getActivity().getLayoutInflater(); 

View layout = inflater1.inflate(R.layout.custom_toast, (ViewGroup) getActivity().findViewById(R.id.custom_toast_layout_id)); 

// set a message 
TextView text = (TextView) layout.findViewById(R.id.text); 
text.setText("Custom Toast"); 

// Toast... 
Toast toast = new Toast(getActivity().getApplicationContext()); 
toast.setGravity(Gravity.CENTER, 0, 0); 
toast.setDuration(Toast.LENGTH_LONG); 
toast.setView(layout); 
toast.show();