【发布时间】:2014-03-30 22:48:04
【问题描述】:
我正在使用以下方式开发 Android 应用:
support v4
support v7 appcompat
gridlayout v7
支持库。
当我使用 Eclipse 在我的 android 手机中安装这个应用程序时,一切正常。 当我尝试导出/签署此应用程序并安装创建的 .apk 文件时,我在填充 listView 时遇到以下异常:
java.lang.NullPointerException
at my.app.ar.getView(Unknown
at android.widget.AbsListView.obtainView(AbsListView.java:1430)
at android.widget.ListView.makeAndAddView(ListView.java:1793)
at android.widget.ListView.fillDown(ListView.java:670)
at android.widget.ListView.fillFromTop(ListView.java:727)
at android.widget.ListView.layoutChildren(ListView.java:1646)
at android.widget.AbsListView.onLayout(AbsListView.java:1260)
at android.view.View.layout(View.java:7277)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1254)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1130)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1047)
at android.view.View.layout(View.java:7277)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1254)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1130)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1047)
at android.view.View.layout(View.java:7277)
at android.widget.FrameLayout.onLayout(FrameLayout.java:338)
at android.view.View.layout(View.java:7277)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1254)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1130)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1047)
at android.view.View.layout(View.java:7277)
at android.widget.FrameLayout.onLayout(FrameLayout.java:338)
at android.view.View.layout(View.java:7277)
at android.widget.FrameLayout.onLayout(FrameLayout.java:338)
at android.view.View.layout(View.java:7277)
at android.view.ViewRoot.performTraversals(ViewRoot.java:1203)
at android.view.ViewRoot.handleMessage(ViewRoot.java:1957)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:150)
at android.app.ActivityThread.main(ActivityThread.java:4277)
at java.lang.reflect.Method.invokeNative(Native
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
at dalvik.system.NativeStart.main(Native
但如果应用程序是从 eclipse 安装的,则不会出现此问题。
以下代码是我填充 ListView 的地方,以及何时(我认为)引发异常:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
// inflate the layout
LayoutInflater inflater = ((Activity) context).getLayoutInflater();
convertView = inflater.inflate(layoutResourceId, parent, false);
}
final SheetVO userSheet = this.sheets.get(position);
final ProductVO product = userSheet.getProduct();
TextView textViewItem = (TextView) convertView.findViewById(R.id.userScanRowView);
textViewItem.setText(product.getName());
textViewItem.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(context, SheetActivity.class);
intent.putExtra("idSheet", userSheet.getId());
context.startActivity(intent);
}
});
return convertView;
}
这是导出/签名过程错误吗?
【问题讨论】:
-
能贴出相关代码吗?
-
鉴于在调试和导出、签名构建之间发生故障,我的直觉会怀疑您的 proguard 配置。但如果那是因为它不完全清楚为什么你得到一个空指针异常而不是一个类未找到异常,所以可能不是这样。 my.app.ar.getView 的代码对您发布很有用。或者也许 proguard 正在离开这个类,但是因为简单的静态分析表明它没有被任何 java 代码调用,所以取消了这个方法?
-
感谢 Tushar 和 Chris。我发布了调用的代码。
-
@ChrisStratton,有正确的想法!禁用proguard,everythink工作。现在我正在尝试正确配置proguard。使用通用配置我仍然有错误:
code-dontwarn android.support.** -libraryjars libs -keep interface android.support.v4.** { ; } -keep class android.support.v4.* { *; }code
标签: android eclipse listview nullpointerexception android-support-library