2013-02-25 41 views
3

在Android API11 +中,我在PopupWindow中顯示一個按鈕。我想在點擊按鈕時顯示一個PopupMenu,而不關閉PopupWindow。這可能嗎? 我實例化和initilizing的彈出菜單,但是當我打電話popupMenu.show() 我得到這個誤差(logcat的+部分調用堆棧):PopupWindow上的View可以顯示PopupMenu嗎?

02-25 13:31:38.281:W /窗口管理(528):試圖添加窗口與子窗口的標記:[email protected]。中止。 02-25 13:31:51.257:D/AndroidRuntime(7643):關閉虛擬機 02-25 13:31:51.257:W/dalvikvm(7643):threadid = 1:線程以未捕獲的異常退出(group = 0x40a711f8 ) 02-25 13:31:51.320:E/AndroidRuntime(7643):致命例外:main 02-25 13:31:51.320:E/AndroidRuntime(7643):android.view.WindowManager $ BadTokenException:無法添加窗口 - 令牌[email protected]無效;你的活動正在運行? [其餘堆棧]

這是因爲PopupMenu使用另一個PopupWindow,似乎不允許從PopupWindow?當我將它連接到活動內容視圖中的一個按鈕時,相同的代碼運行正常。

由於提前,

回答

1

你不能從一個PopupWindow視圖,你可以做的是定義或從roow此處查看或頂層視圖內視圖錨錨定的PopupMenu是一個例子:

main.xml中:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" 
tools:context=".MainActivity" > 


     <ImageView 
      android:id="@+id/IVoptionsMenuInvis" 
      android:layout_width="match_parent" 
      android:layout_height="52dp" 
      android:layout_gravity="center_horizontal" 
      android:layout_weight="25"    
      android:paddingBottom="6dp" 
      android:paddingTop="6dp"> 

</FrameLayout> 

popupwindow.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/settingseditback" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" 
tools:context=".MainActivity" > 

<ImageView 
      android:id="@+id/IVoptionsMenu" 
      android:layout_width="match_parent" 
      android:layout_height="52dp" 
      android:layout_gravity="center_horizontal" 
      android:layout_weight="25" 
      android:onClick="showSettingsPopup2" 
      android:paddingBottom="6dp" 
      android:paddingTop="6dp" 
      android:src="@drawable/ic_actionbar_overflow_dark" /> 

</LinearLayout> 

一個ð最後你的MainActivity.java:

public class MainActivity extends Activity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     setContentView(R.layout.main); 
    } 
. 
. 
. 
    public void showSettingsPopup2(View v) { 
     PopupMenu popup = new PopupMenu(MainActivity.this, findViewById(R.id.IVoptionsMenuInvis)); 
     popup.setOnMenuItemClickListener(this); 
     popup.getMenuInflater().inflate(R.menu.main, popup.getMenu()); 
     popup.show(); 
    } 
} 
+0

注:「我想表現出PopupMenu的按鈕被按下時,無需關閉PopupWindow」。我試過你的解決方案,但它會導致彈出窗口關閉。 – 2014-07-17 06:49:22

+0

不,這是我在我自己的應用程序中使用它,你可以檢查我的答案我自己的問題,並檢查我使用的代碼[這裏](http://stackoverflow.com/a/24770364/3111479) – Easyfast 2014-07-17 19:52:26

相關問題