2013-07-18 17 views
12

ich Störung erhalte, während ein I ToastKann nicht Maketext() -Methode von Toast lösen

Toast toast = Toast.makeText(this, text, duration); 

Schaffung bin immer kann makeText() Methode von Toast nicht lösen.

Ich erhalte diese Störung

java: keine geeignete Methode gefunden für Maketext (idtech.ESDN.ShapeData, java.lang.CharSequence, int) Methode android.widget.Toast.makeText (android.content. Context, int, int) ist nicht anwendbar (tatsächliches Argument idtech.ESDN.ShapeData kann nicht in android.content.Context durch Methodenaufrufkonvertierung konvertiert werden) Methode android.widget.Toast.makeText (android.content.Context, java. lang.CharSequence, int) ist nicht anwendbar (tatsächliches Argument idtech.ESDN.ShapeData kann nicht in android.content.Context durch Methodenaufrufkonvertierung konvertiert werden)

+8

Versuchen Sie, 'this 'durch' getApplicationContext() 'zu ersetzen. –

+2

Toast.makeText (YourActivity.this, text, duration) .show(); – Androider

+0

Ich habe es versucht, aber immer noch den gleichen Fehler –

Antwort

17

Die Maketext Unterschrift ist die folgende

public static Toast makeText (Context context, CharSequence text, int duration) 

die erste Paramter ein Kontextobjekt sein muss. Sie setzen this, aber this bezieht sich auf dieses Objekt und es kann etwas anderes als ein Activity (ein Fragment zum Beispiel) sein.

+0

Ich setze getApplicationContext(), aber ich bekomme immer noch denselben Fehler. –

+0

Text und Dauer welche Typen sind? String und Int? – Blackbelt

+0

Ja Text ist Char-Sequenz und Int ist Dauer –

4

Haben Sie das Toast-Widget importiert?

import android.widget.Toast; 

Sie können auch show() in der gleichen Zeile aufrufen, wenn Sie ausgeben wollen es sofort:

Toast toast = Toast.makeText(context, text, duration).show(); 

Hoffnung, das hilft.

+1

Ich habe beide von Ihrem Vorschlag versucht, aber immer noch den gleichen Fehler –

+0

Es könnte auch sein, dass "das" ist keine Aktivität, wo versuchen Sie den Toast zu konstruieren? Etwas mehr Code wäre hilfreich, aber versuchen Sie getApplicationContext() anstelle von "this". –

+1

was soll ich schreiben statt dies habe ich versucht sowohl dies als auch getApplicationContext(). –

1

Toast.makeText (YourActivity.this, Text, Dauer) .show(); Versuchen

2

Toast toast = Toast.makeText(getActivity(), text, duration);

Sie können auch .show() anhängen wollen, wenn Sie es wünschen

4

Stellen Sie sicher, anzuzeigen, dass Sie Folgendes eingeben: Toast toast = Toast.makeText(this, text, duration);

Nicht: Toast toast = new Toast.makeText(this, text, duration);

+0

ja ich entfernte die 'neue' war da versehentlich – shareef

14

dieses in Ihrem Fall ist möglicherweise nicht Gegenstand der Aktivität. Möglicherweise verwenden Sie die Toast.makeText-Methode in Ihrem Click Listener-Objekt. Um dies zu beheben, müssen Sie getApplicationContext() verwenden:

Toast.makeText (getApplicationContext(), "Ihre Nachricht", Toast.LENGTH_LONG);

+0

danke, funktioniert sehr gut –

+0

Gern geschehen! Ich bin froh, dass es geholfen hat. :) –

0

Ich habe ein ähnliches Problem konfrontiert, aber in meinem Fall fand ich heraus, dass Xamarin C# und Java in Android Studio Unterschiede beim Aufruf einiger Funktionen (gleiche Funktionen) haben.

Wenn Xamarin und C# verwenden, dann wird Maketext Maketext und Show wird zeigen, wie unten dargestellt:

Toast toast = Toast.MakeText(this, "Text", ToastLength.Long); 
toast.Show(); 

this helps :)

0

Wenn Sie Toast Ihren Text in der MainActivity versuchen dann Dazu:

Toast.makeText(getApplicationContext(), "Your text", Toast.LENGTH_LONG).show(); 
1

im onClick(View view) Klick Zuhörer innerhalb eines RecyclerView.ViewHolder wird der Kontext abgerufen wit h view.getContext(), wie in:

`` `

public class MyHolder extends RecyclerView.ViewHolder implements 
View.OnClickListener { 

    public MyHolder(View itemView) { 
     super(itemView); 
     //... 
     itemView.setOnClickListener(this); 
    } 

    @Override 
    public void onClick(View view) { 
     Toast.makeText(view.getContext(), "the message", 
      Toast.LENGTH_SHORT).show(); 
    } 

` ``

0

Dies könnte hilfreich sein, wenn Sie versuchen, Toast in Fragmente zu verwenden:

Toast.makeText(Your_Fragment_Name.super.getContext(), "Added", Toast.LENGTH_SHORT).show(); 
0

Ich habe konfrontiert ähnliches Problem in Android-Studio, löse ich dieses Problem mit getActivity() anstelle von this in das Fragment

Toast.makeText(getActivity(), "Your Text", Toast.LENGTH_SHORT).show(); 
Verwandte Themen