2013-07-31 3 views
0

Я пытаюсь сделать тост, который будет отображать информацию, хранящуюся в переменной text, когда нажата кнопка submitbtn. Ошибка, что я получаю не с в управлении кода, но с Eclipse, говоря мне:Тост вызов внутри кнопки нажатием кнопки, чтобы ошибка, которую я не могу определить

The method makeText(Context, CharSequence, int) in the type Toast is not applicable for the arguments (Class, String, int)

файл, который Тост в это файл UserInput.java. Вот текущий код блока:

Button submitBtn = (Button) findViewById(R.id.buttonSubmit); 
    submitBtn.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      int position = spinner.getSelectedItemPosition(); 
      String text = null; 
      text = dayArray[position].toString(); 
      //Log.i("spinner test: ", text); 
      Toast toast = Toast.makeText(UserInput.class, text, Toast.LENGTH_LONG).show(); 
     } 
    }); 

Я даже попытался установить контекст для UserInput.this и getApplicationContext(), и это дает мне эту ошибку:

Type mismatch: cannot convert from void to Toast

Я дам вам знать, что я Android новичком и некоторым новичком Java, но я искал высоко и низко и не могу найти никаких решений, которые будут работать. Этот тост также не важен для приложения, которое я разрабатываю, поэтому он может и будет полностью выведен, но я хочу знать, почему это не будет работать для моего учебного процесса.

ответ

2

Изменить

Toast toast = Toast.makeText(UserInput.class, text, Toast.LENGTH_LONG).show(); 

в

Toast.makeText(UserInput.this, text, Toast.LENGTH_LONG).show(); 

Вы должны использовать ваш ActivityContext так что вы используете ActivityName.this.

Но ваша первоначальная проблема в том, что если вы делаете это так, вам нужно просто называть это статически, потому что вы вызываете show().

Вы можете снять show() и создать экземпляр Toast, если вы хотите, чтобы делать другие вещи с ним, такие как вызов setView() использовать пользовательские View для Toast. Затем вызовите show() на созданном вами экземпляре Toast.

+0

Хорошо, я беру это от этого и исправляю, если неправильно, когда показываю Toast в том же самом утверждении, что вам не нужно строить переменную часть «Toast toast =' при первом синтаксисе. – Creaswen

+0

Правильно, потому что вы используете его в контексте 'static'. Очень похоже на использование «ProgressDialog» – codeMagic

+0

[The Docs Here] (http://developer.android.com/reference/android/widget/Toast.html) может или не может сделать его более очевидным – codeMagic