2016-08-13 3 views
0

У меня есть следующий код внутри класса адаптера, который я использую для listview в другом классе.Android Adapter AlertDialog error

AlertDialog.Builder builder = new AlertDialog.Builder(getContext()); 
builder.setTitle("Introduceti parola:"); 
final EditText input = new EditText(getContext()); 
input.setInputType(InputType.TYPE_CLASS_TEXT); 
builder.setView(input); 
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { 
    @Override 
    public void onClick(DialogInterface dialog, int which) 
    { 
     hash.put("name", Rooms.name); 
     hash.put("parola", input.getText().toString()); 
     site = siteul + "/join"; 
     new ATask((ViewHolder) v.getTag()).execute(site); 
    } 
}); 
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
    @Override 
    public void onClick(DialogInterface dialog, int which) { 
     dialog.cancel(); 
    } 
}); 
builder.show(); 

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

android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application 

Я думал, что getContext() был виноват, но он не создает каких-либо ошибок в этом коде в том же классе адаптера:

Toast.makeText(getContext(), "Cool message!", Toast.LENGTH_LONG).show(); 

В чем проблема?

ответ

0

Заменить getContext() на ActivityName.this.

+0

Пробовал его с именем класса адаптера вместо 'ActivityName', но он не компилируется. – Vali79

+0

Нет, это название активности, которое необходимо показать в окне. То есть, предупреждение создается с контекстом активности, которое будет отображаться. –

+0

Ну, если я использую это, он говорит: «ActivityName не является закрывающим классом», и запись 'ActivityName.class' тоже не работает. – Vali79