我想在我的應用程序中使用彈出式菜單,它應該與Android 1.6+兼容。因此,我使用此代碼(取自Supporting Different Platform Versions)區分預蜂窩(沒有PopupMenu)和蜂窩+顯示無論是PopupMenu的或AlertDialog:Android PopupMenu「找不到類android.widget.PopupMenu'
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
PopupMenu popup = new PopupMenu(this, v);
...
} else {
showDialog(DIALOG_ID);
}
此正常工作與仿真的Android 2.1(表示AlertDialog),2.3.3(表示AlertDialog)和4.2。 2(顯示PopupMenu),但它不適用於模擬的Android 1.6。我收到以下錯誤消息:
E/dalvikvm(211): Could not find class 'android.widget.PopupMenu', referenced from method ...
W/dalvikvm(211): VFY: unable to resolve new-instance 50 (Landroid/widget/PopupMenu;) in L...;
W/dalvikvm(211): VFY: rejecting opcode 0x22 at 0x0006
W/dalvikvm(211): VFY: rejected L...;.... (Landroid/view/View;)V
W/dalvikvm(211): Verifier rejected class L...;
W/dalvikvm(211): Class init failed in newInstance call (L...;)
爲什麼Android 2.x會像預期的那樣運行,但Android 1.6不會?
爲什麼不使用警報對話框?與控制API版本 if(android.os.Build.VERSION.RELEASE.startsWith(「1。」)) 。 。 。 (「2.0」)|| android.os.Build.VERSION.RELEASE.startsWith(「2.1」)) 。 。 – 2013-05-11 11:24:13
1.6不支持彈出菜單..bcoz它被添加到Api級別11 .. – Sam 2013-05-11 11:28:27
@Sam這就是爲什麼我顯示AlertDialog,如果API級別低於11 ... – floppes 2013-05-11 13:12:30