gak*_*gak 1 android exception android-alertdialog
我正在收到关于这个特殊异常的报告,它让我很难过,没有任何运气来寻找它.这个应用程序已经在少数几个不同的设备上进行了测试,没有任何类似的东西.
奇怪的是,用户第一次运行应用程序时,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)
Run Code Online (Sandbox Code Playgroud)
方法包括:
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();
}
Run Code Online (Sandbox Code Playgroud)
第143行是:
new AlertDialog.Builder(context, AlertDialog.THEME_HOLO_DARK)
Run Code Online (Sandbox Code Playgroud)
还有另一个堆栈跟踪来自不同的路径,但继续以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)
Run Code Online (Sandbox Code Playgroud)
我想我刚刚解决了,THEME_HOLO_DARK
是API等级11.奇怪的是,在运行2.3.3(API级别10)的设备上尝试它时似乎没有问题.
这里提到了一种安全使用它的方法:https://groups.google.com/forum/?fromgroups#!topic/actionbarsherlock/0yNlvDXObAo
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());
}
Run Code Online (Sandbox Code Playgroud)
此外,这是使用THEME_HOLO_DARK的代码的唯一部分,因此它只发生在那里.我想我正在那个阶段尝试不同的主题,并意外地将它留在那里.