2013-07-08 55 views
1

傢伙。我在Android中遇到了關於PopupWindow的問題。
我有2個按鈕,單擊其中一個將顯示一個popupWindow,它是外部類中的成員變量。
popupWindow的內容和佈局是不同的。
我的onClick方法更新popipWindow的內容是這樣的:PopupWindow無法在InnerClass的onClick()中顯示

bt1.setOnClickListener(new OnClickListener{  
     onClick(View v){ 
      mPopupWin.setContentView(R.layout.layout_a); 
    }); 

    bt2.setOnClickListener(new OnClickListener{  
     onClick(View v){ 
      mPopupWin.setContentView(R.layout.layout_b); 
    }); 

當我點擊其中任何在第一次,它的工作原理,popupWindow表演,但是當我點擊另外一個,popupWindow不expectably顯示(之前mPopupWin已被正確解除,contentView不爲NULL,並且寬度/高度不是0,我檢查了...)。
當我再次點擊第二個按鈕時,popupWindow正常顯示。 然後我嘗試使用AsycnTask在doInBackground中設置ContentView(),並在onPostExecute()中顯示popupWindow,一切正常。

我可以通過這種方式達到我的目的,但我仍然想知道第一種方法有什麼問題。
希望你的幫助,感謝ü:)

+1

你試過'mPopupWin.update()進行添加;'設置'layout'後? – codeMagic

+0

是的,我已經這樣做了。仍然無法顯示popupWindow – StayFree

回答

1

我還沒有機會測試它,但嘗試改變你的代碼中使用update()

bt1.setOnClickListener(new OnClickListener{  
    onClick(View v){ 
     mPopupWin.setContentView(R.layout.layout_a); 
     mPopupWin.update(); 
}); 

bt2.setOnClickListener(new OnClickListener{  
    onClick(View v){ 
     mPopupWin.setContentView(R.layout.layout_b); 
     mPopupWin.update(); 
}); 

According to the Docs

這種方法沒有任何如果在彈出窗口顯示時調用效果。

您可能需要看是否決定叫update()與否時isShowing()