W/ResourceType(463):在Android活动中无法进入包0(错误-75)

caw*_*caw 7 android android-resources

在我的Android应用程序的一个Activity(SherlockActivity顺便说一句)中,我有一个正常的ListView.

为此ListView,我设置了一个AdapterView.OnItemClickListener通道getListView().setOnItemClickListener(...).

在该监听器中,AlertDialog使用AlertDialog.Builder该类构建,然后向用户显示:

getListView().setOnItemClickListener(new AdapterView.OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, final View v, int position, long id) {
        AlertDialog.Builder builder = new AlertDialog.Builder(MyActivity.this);
        ...
        builder.setMessage(Html.fromHtml(...));
        builder.show();
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,在builder.show()调用时,以下警告始终出现在LogCat中:

W/ResourceType(463): Failure getting entry for 0x010802c9 (t=7 e=713) in package 0 (error -75)
Run Code Online (Sandbox Code Playgroud)

这是从哪里来的?对我而言,似乎这是我无法控制的,因为它出现时builder.show(),所以这个警告可能会在AlertDialog类的源代码中生成.这是真的?

如果没有,我怎样才能找到丢失的资源?如何调试此警告?

编辑:没有相应的条目0x010802c9(或运行时的任何值)R.java,所以我真的不知道如何调试它.

Mr.*_*. P 1

您是否尝试从工作线程而不是 GUI 线程打开它?您可以使用以下命令检查线程是否为 GUI 线程:

Looper.myLooper() == Looper.getMainLooper()

为了确保它是从 GUI 线程打开的,请使用处理程序或runOnUiThread方法。

  • 这不会改变任何事情。您提出的表达式确实已经计算为“true”,因此“runOnUiThread(...)”没有任何效果。顺便说一句,如果从错误的线程调用是问题的原因,您会看到“java.lang.RuntimeException:无法在之前未调用过 Looper.prepare() 的线程内创建处理程序”;)谢谢,反正! (2认同)