我收到关于这个特殊异常的报告,它让我难堪,没有找到任何运气。这个应用程序已经在少数不同的设备上测试过,没有任何类似的设备。
奇怪的是,用户第一次运行应用程序时,会创建并显示AlertDialog.Builder
,因此AlertDialog.Building
很可能是设备上真正的方法。该文档还告诉我,API级别1后也会出现这种情况。
这个例外情况是否可以引用其他一些问题?
运行2.3.6的GT-N7000 Galaxy Note出现异常。
的堆栈跟踪模糊化:
java.lang.NoSuchMethodError: android.app.AlertDialog$Builder.
at com.slowchop.wifiheat.lib.heat.Filter.void showSubjectDialog(java.lang.String,java.lang.String)(SourceFile:143)
at com.slowchop.wifiheat.lib.heat.Filter.void showChangeAccessPoint()(SourceFile:128)
at com.slowchop.wifiheat.lib.heat.HeatActivity.boolean onOptionsItemSelected(com.actionbarsherlock.view.MenuItem)(SourceFile:475)
at android.support.v4.app._ActionBarSherlockTrojanHorse.boolean onMenuItemSelected(int,com.actionbarsherlock.view.MenuItem)(SourceFile:119)
参与方法:
private void showSubjectDialog(String title, final String filter) {
new AlertDialog.Builder(context, AlertDialog.THEME_HOLO_DARK)
.setTitle(title)
.setAdapter(subjectAdapter, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int i) {
ListItem item = (ListItem)subjectAdapter.getItem(i);
updateFilterFromAlertDialog(dialog, filter, item.id);
}
}).show();
}
143线是:
new AlertDialog.Builder(context, AlertDialog.THEME_HOLO_DARK)
还有人认为,来自不同的另一个堆栈跟踪路径,但继续以相同的方式呼叫showChangeAccessPoint()
。在这种情况下,关于AlertDialog.Builder
错误是来自另一个AlertDialog.Builder
叫:
java.lang.NoSuchMethodError: android.app.AlertDialog$Builder.
at com.slowchop.wifiheat.lib.heat.Filter.void showSubjectDialog(java.lang.String,java.lang.String)(SourceFile:143)
at com.slowchop.wifiheat.lib.heat.Filter.void showChangeAccessPoint()(SourceFile:128)
at com.slowchop.wifiheat.lib.heat.Filter$2.void onClick(android.content.DialogInterface,int)(SourceFile:85)
at com.android.internal.app.AlertController$AlertParams$3.onItemClick(AlertController.java:935)
提到请问什么是 “_ActionBarSherlockTrojanHorse” 是另一种方式? – dotty 2012-07-15 20:33:04
@dotty这是一个不幸的名字,不是。 https://groups.google.com/forum/?fromgroups#!topic/actionbarsherlock/BdzoSdOJy6I – 2012-07-15 20:40:51