java.lang.NoSuchMethodError:android.app.AlertDialog$Builder

java.lang.NoSuchMethodError:android.app.AlertDialog$Builder,android,exception,android-alertdialog,Android,Exception,Android Alertdialog,我收到了关于这一特殊情况的报告,它难住了我,没有任何运气到处寻找它。这个应用程序已经在一些不同的设备上进行了测试,没有任何类似的东西 奇怪的是,用户第一次运行应用程序时,会创建并显示一个AlertDialog.Builder,因此AlertDialog.Building很可能是设备上真正的方法。文档还告诉我,自API级别1以来,它也一直存在 例外情况是否会涉及其他问题 异常发生在运行2.3.6的GT-N7000 Galaxy Notes上 堆栈跟踪将被清除: java.lang.NoSuchMe

我收到了关于这一特殊情况的报告,它难住了我,没有任何运气到处寻找它。这个应用程序已经在一些不同的设备上进行了测试,没有任何类似的东西

奇怪的是,用户第一次运行应用程序时,会创建并显示一个
AlertDialog.Builder
,因此
AlertDialog.Building
很可能是设备上真正的方法。文档还告诉我,自API级别1以来,它也一直存在

例外情况是否会涉及其他问题

异常发生在运行2.3.6的GT-N7000 Galaxy Notes上

堆栈跟踪将被清除:

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)

我想我刚刚解决了,
THEME\u HOLO\u DARK
。奇怪的是,在运行2.3.3(API级别10)的设备上尝试时,它似乎没有问题

这里提到了安全使用它的方法:


此外,这是代码中唯一使用主题“全息”的部分,因此它只在那里发生。我想我在那个阶段尝试了不同的主题,但不小心把它忘在了那里。

我想我刚刚解决了,
THEME\u HOLO\u DARK
是。奇怪的是,在运行2.3.3(API级别10)的设备上尝试时,它似乎没有问题

这里提到了安全使用它的方法:


此外,这是代码中唯一使用主题“全息”的部分,因此它只在那里发生。我想我在那个阶段尝试了不同的主题,但不小心把它忘在了那里。

另一种方式,如


另一种方式,如在


我可以问一下“\u ActionBarSherlock特洛伊木马”是什么吗?@dotty这是个不幸的名字,不是吗。我可以问一下“\u ActionBarSherlock特洛伊木马”是什么吗?@dotty这是个不幸的名字,不是吗。
AlertDialog.Builder builder;
try {
    builder =  new AlertDialog.Builder(getActivity(), R.style.Theme.Sherlock.Dialog);
} catch (NoSuchMethodError e) {
    Log.e(TAG, "Older SDK, using old Builder");
    builder =  new AlertDialog.Builder(getActivity());
}
if (Build.VERSION.SDK_INT > 10)
    builder =  new AlertDialog.Builder(getActivity(), R.style.Theme.Sherlock.Dialog);
else
    builder =  new AlertDialog.Builder(getActivity());