2016-08-13 68 views
0

我有一個Adapter類中的以下代碼,我用於另一個類中的listview。Android適配器AlertDialog錯誤

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.class'也不起作用。 – Vali79