2016-08-22 6 views
-2

intdelay wurde am Anfang des Codes von 1000 initialisiert. und ich versuche sicherzustellen, dass der Wert intdelay durch den Wert im Bearbeitungsfeld durch Hinzufügen eines Toast aktualisiert wird, wenn auf die Schaltfläche geklickt wird. aber wenn ich die app laufen lasse, erhalte ich folgendes Problem:Toast in einem Button OnclickListener funktioniert nicht

Error:(46, 22) error: no suitable method found for makeText(<anonymous OnClickListener>,String,int) 
method Toast.makeText(Context,CharSequence,int) is not applicable 
(argument mismatch; <anonymous OnClickListener> cannot be converted to Context) 
method Toast.makeText(Context,int,int) is not applicable 
(argument mismatch; <anonymous OnClickListener> cannot be converted to Context) 

Dies ist der Teil meines Codes:

@Override 
     protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     delayedttxt=(EditText)findViewById(R.id.delayedttxt); 

    String delay=delayedttxt.getText().toString();  //this will get a string 
    try{ 
     int intdelay = Integer.parseInt(delay); 
    }catch(NumberFormatException ex){ // handle your exception 
    } 

    Button btn=(Button)findViewById(R.id.btn); 
    btn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      flashLight.switchFlash(); 
      Toast.makeText(this,"your integer is " + intdelay , Toast.LENGTH_LONG).show(); 
     } 

    }); 

, wie ich das lösen kann?

+0

debug your code, ich denke flashLight.switchFlash(); Dies hat eine Ausnahme – YUVRAJ

+1

einfache Frage !!! jeder gibt Antwort –

Antwort

1

Das ist, weil makeText ein Context als erstes Argument haben will. Sie befinden sich in der onClick-Funktion eines OnClickListener. Dies bedeutet, dass this auf Ihre OnClickListener zeigt.
Sie müssen diese so etwas wie haben

Toast.makeText(YourActivity.this,"your integer is " + intdelay , Toast.LENGTH_LONG).show(); 
+0

Großartig! es hat funktioniert – Aloweiwi

0

Versuchen wie folgt aus:

Toast.makeText(YourActivityName.this,"your integer is " + intdelay , Toast.LENGTH_LONG).show(); 
+0

Großartig! Es hat funktioniert – Aloweiwi

+0

Wenn es funktioniert als meine Antwort zu akzeptieren –

0

Ändern Sie den Kontext, wenn nicht kann falsch in flashLight.switchFlash Methode somwthing

3

Sie haben falschen Kontext gegeben; diese Zeile ändern:

Toast.makeText(this,"your integer is " + intdelay , Toast.LENGTH_LONG).show(); 

zu

Toast.makeText(YourActivity.this,"your integer is " + intdelay , Toast.LENGTH_LONG).show(); 
+0

Großartig! Es funktionierte – Aloweiwi

+0

Sie können dies als eine Antwort akzeptieren. –

0

Sie versuchen, innerhalb der OnClickListener Ihren Toast zu zeigen. Das Schlüsselwort this bezieht sich in diesem Fall auf eine Instanz des Typs OnClickListener und nicht Context, wie es erforderlich ist.

Sie sollten <YourActivityClass>.this verwenden, um auf die umschließende Aktivitätsinstanz zu verweisen, die eine Context ist und verwendet werden kann, um den Toast anzuzeigen.

0

Versuchen Sie, diese Codezeile einfügen:

Toast.makeText(getApplicationContext(),"your integer is " + intdelay , Toast.LENGTH_LONG).show(); 
0

Bitte diese in Ihrer Tätigkeit,

Toast.makeText(getApplicationContext(),"your integer is " + intdelay , Toast.LENGTH_LONG).show(); 
0

sollten Sie von ändern

Toast.makeText(this,"your integer is " + intdelay , Toast.LENGTH_LONG).show(); 

zu

Toast.makeText(getContext(),"your integer is " + intdelay , Toast.LENGTH_LONG).show(); 
Verwandte Themen