2013-03-07 5 views
5
public class MainActivity extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 



    Button btn = (Button) findViewById(R.id.button1); 
    btn.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      EditText text = (EditText)findViewById(R.id.editText1); 
      EditText text1 = (EditText)findViewById(R.id.editText2); 
      String userid = text.getText().toString(); 
      String pass = text1.getText().toString(); 
     Toast.makeText(getBaseContext(),"Entered"+userid+"and password entered is"+pass,Toast.LENGTH_SHORT).show(); 
     } 

    }); 

} 

Kod jest wykonywany pomyślnie, ale nic się nie dzieje po naciśnięciu przycisku. Kiedy skupić się na linii w Eclipse mówi następującychPróbuję wyświetlić toast po naciśnięciu tego przycisku. Ale kod nie działa

"The method makeText(Context, CharSequence, int) in the type Toast is not applicable for the arguments (new 
View.OnClickListener(){}, String, int)" 

Proszę mi powiedzieć, co mogę wymagać, aby zrobić aby to działało

+1

spróbuj MainActivity.this zamiast geBaseContext() – Pragnani

+0

Nie używałeś 'getBaseContext()', gdy zobaczyłeś błąd, którego używasz 'this' ... Powinieneś próbować zapisać lub wyczyścić kod. – Sam

Odpowiedz

16

Trzeba zdać aktualny Context jako pierwszy parametr (zamiast getBaseContext()). W twoim przypadku jest to MainActivity.this.

Toast.makeText(MainActivity.this,"Entered"+userid+"and password entered is"+pass,Toast.LENGTH_SHORT).show(); 
+0

Pracował jak urok! Dzięki! Czy mógłbyś skierować mnie ku temu, co właściwie oznacza "kontekst"? Jestem bardzo nowy w rozwoju aplikacji na Androida. I jestem pewien, że jeśli wiem, co to jest, nie będę popełniał takich błędów więcej. – tMJ

2

Dzieje się tak dlatego, że getBaseContext() w tym miejscu kodu odwołuje się do detektora kliknięć. To, co chcesz wskazać, to Twoja aktywność. Należy zmienić nazwę swojego kontekstu, w wiadomości Toast za View.getContext() (jeśli pracuje od kontekstu od wewnątrz podrzędny) lub to.

+1

'getBaseContext()' nie może odwoływać się do OnClickListener, był to czerwony śledzia. – Sam

+0

Powód, dla którego uzyskiwał wydruk "Metoda makeText (Context, CharSequence, int) w typie Toast nie ma zastosowania dla argumentów (nowy View.OnClickListener() {}, String, int)" powinien być, ponieważ argument z przekazanego getBaseContext był taki, jak błąd określa View.OnClickListener. –

+0

Jeśli uda ci się odtworzyć ten błąd, będę pod wrażeniem. Błąd najprawdopodobniej został porzucony z 'Toast.makeText (this, ...' a kompilator nie odświeżył/usunął tego błędu. Również ja nigdy nie słyszałem o 'Activity.getContext()' czy to literówka? Gdyby nie link do jego dokumentacji? – Sam

0
Toast.makeText(getApplicationContext(),"Entered"+userid+"and password entered is"+pass,Toast.LENGTH_SHORT).show(); 

LUB

Toast.makeText(MainActivity.this,"Entered"+userid+"and password entered is"+pass,Toast.LENGTH_SHORT).show(); 

Składnia metody

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

Kontekst użyć. Zwykle Twój obiekt aplikacji lub działania.

Powiązane problemy