【问题标题】:Problem with some mdpi and ldpi ressources with androidandroid 的一些 mdpi 和 ldpi 资源存在问题
【发布时间】:2011-01-20 18:14:19
【问题描述】:

我有一个支持从 hdpi 到 ldpi 的应用程序。它工作正常,访问资源没有任何问题。 在这个应用程序中,我有一个 ListView,我决定在列表的每个视图中添加一个图像。于是我准备了三张png图片,每种分辨率一张,放在各自的资源目录下。

使用 hdpi 2.2 模拟器一切正常,但在我将可绘制对象放入 iImageView 的 bindView 方法行中,2.2 mdpi 和 ldpi 中的 NullPointerException 崩溃: mImageView.setImageDrawable(getBaseContext().getResources().getDrawable(R.drawable.hello) 我尝试将getBaseContext() 替换为getApplicationContext(),甚至将其删除,但均未成功。

我猜该应用程序不在 -mdpi 文件夹中。但是,我不明白为什么 hdpi 版本可以正常工作。请注意,裸可绘制目录中没有任何内容。 此外,该应用知道如何查看这些文件夹,因为它是在之前的活动中使用 ListView 启动的。

有什么想法吗?

【问题讨论】:

    标签: android listview resources hdpi mdpi


    【解决方案1】:

    也许您应该将 getBaseContext() 替换为您的上下文。请参阅此 question 中的最佳答案

    【讨论】:

    • 这就是我尝试过的。 bindView 方法在参数中采用 Context 上下文。我也尝试过使用它但没有成功......
    • 尝试使用调试器,删除 /drawable 并发布您收到的错误消息。也尝试关闭/重新打开模拟器。另外,您的代码中的 bindView 方法在哪里?我没看见过它。 “删除它”是什么意思?删除什么?
    • 这与模拟器无关,因为它首先发生在我的 mdpi 手机上。 bindView 在扩展 CursorAdapter 的类中,并获取父活动的上下文作为参数。通过删除它,我的意思是调用前面没有任何内容的 getRessource(删除 getBaseContext。)
    • ERROR/AndroidRuntime(332): FATAL EXCEPTION: main ERROR/AndroidRuntime(332): java.lang.NullPointerException at com.tom.test.TestActivity$AdapterTuning.bindView(TestActivity.java:377)在 android.widget.CursorAdapter.getView(CursorAdapter.java:186) 在 android.widget.AbsListView.obtainView(AbsListView.java:1315) 在 android.widget.ListView.measureHeightOfChildren(ListView.java:1198) 在 android.widget。 ListView.onMeasure(ListView.java:1109) at android.view.View.measure(View.java:8171)...第377行是我的问题...
    • 您可以使用调试器在该 bindview 行设置断点吗?然后在调试模式下运行您的程序。当它到达该行时,检查三个参数中的哪一个为空:视图、上下文或光标。
    【解决方案2】:

    您的目标 SDK 是什么?它应该 > 3 (>1.5)

    【讨论】:

    • 当然是 >3(它是 4!),并且其他(但不在 ListView 中)drawables 都很好获取。
    猜你喜欢
    • 1970-01-01
    • 2011-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多