Toast innen onClick-Methode im Fragment
Ich habe ein Folgendes Fragment:
public class FragmentSocial extends Fragment implements ActionBar.TabListener, OnClickListener
{
private Fragment mFragment;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getActivity().setContentView(R.layout.fragment_social);
}
public void onTabSelected(Tab tab, FragmentTransaction ft) {
//relevant code...
}
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
//relevant code...
}
public void onTabReselected(Tab tab, FragmentTransaction ft) {
//TODO Auto-generated method stub
}
public void onClick(View v) {
switch(v.getId())
{
case R.id.imgBtnFB:
Toast.makeText(this, "FB pressed", Toast.LENGTH_LONG).show();
break;
case R.id.imgBtnTwitter:
Toast.makeText(this, "Twitter pressed", Toast.LENGTH_LONG).show();
break;
}
}
Habe ich ein paar Bild-Tasten in meine fragment_social
layout. Für jetzt möchte ich nur eine Toast-Nachricht, um zu sehen, welche Taste gedrückt wurde. Allerdings, wenn ich this
als Kontext, ich bin immer diese Fehlermeldung:
Die Methode makeText(Context, CharSequence, int) im Typ Toast ist nicht anwendbar für die Argumente (FragmentSocial, String, int)
Ich habe versucht zu ändern this
zu FragmentSocial.this
zu FragmentSocial.this.getActivity()
, versucht zu schaffen private Context mContext
und zu instanziieren, um mContext = (I tried various options here)
innerhalb der onCreate-Methode - aber nichts funktionierte. Entweder ich hatte keine Fehlermeldung, aber auch nicht sehen, der Toast, oder noch andere Fehler.
Also, wie kann ich erstellen ein Toast hier?
Danke!
InformationsquelleAutor Igal | 2013-03-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
verwenden:
Toast.makeText(getActivity().getBaseContext(), "FB pressed", Toast.LENGTH_LONG).show();
? Habe es versucht, funktioniert immer noch nicht... habe Auch versuchtToast.makeText(FragmentSocial.this.getActivity().getBaseContext(), "FB pressed", Toast.LENGTH_LONG).show();
- hat nicht funktioniert, nicht das Toast.Recht. das sollte funktionieren. Setzen Sie Log.d("test", "test") innerhalb des onClick() und sehen, wenn Sie eine Meldung im Logcat. Sie würden dann wissen, ob dein onClick () - Methode aufgerufen wird oder nicht.
Nop, habe ich nicht, siehe Log message. Denke, ich bin etwas falsch hier... ich habe auch versucht, etwas zu tun, dass in der onCreate-Methode:
findViewById(R.id.imgBtnFB).setOnClickListener(this);
aber ich habe noch nicht einmal diefindViewById
Methode zur Verfügung, für einige Grund.Versuchen Sie, Blasen Sie Ihre layout von onCreateView():
Entfernen Sie alles aus dem onCreate (halten super), und erstellen Sie onCreateView() wie folgt aus: @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View View = inflater.inflate(R. layout.fragment_social, container, false); return view; }
InformationsquelleAutor Marcin S.
Wenn Sie mit fragment dann verwenden Sie diesen code
InformationsquelleAutor Ram Kishore Prajapati
Beiden folgenden Zeilen funktionieren.
InformationsquelleAutor Ayush Goyal
Dies ist, wie ich es im fragment
//edit
InformationsquelleAutor Intathep
Erweiterung der Antwort von Marcin S., Sie könnte auch die Einrichtung der Konstruktor innerhalb der Fragment-und eine Kontext-variable. Sie können dann mit diesem Kontext-wenn Sie möchten, eine Referenz-Aktivität. Diese Methode ist auch leicht schneller als die
getActivity().getBaseContext()
Fügen Sie diese zu Ihrem FragmentSocial Klasse:
Wenn Sie jemals sagen
FragmentSocial fragmentSocial = new FragmentSocial();
in der main-activity-Klasse, fügen Sie den Parameterthis
in die()
um es so Aussehen zuFragmentSocial fragmentSocial = new FragmentSocial(this);
Überprüfen Sie meine überarbeitete Antwort.
Ich habe es versucht und bekam diese Fehlermeldung: Vermeiden nicht-Standard-Konstruktoren in Fragmenten: verwenden Sie einen Standard-Konstruktor plus-Fragment#setArguments(Bundle) statt hatte ich auch erstellen Sie einen leeren Konstruktor, da hatte ich mehrere Fehler (ich habe diesen code in meinem onTabSelected Methode -
mFragment = new FragmentSocial();
)InformationsquelleAutor Adam