【问题标题】:ResourcesNotFoundException: File res/layout/progress_dialog.xmlResourcesNotFoundException:文件 res/layout/progress_dialog.xml
【发布时间】:2013-11-25 05:05:21
【问题描述】:

我收到以下崩溃日志,显示在显示 ProgressDialog 时缺少 progress_dialog.xml。

android.content.res.Resources$NotFoundException: File res/layout/progress_dialog.xml from xml type layout resource ID #0x109007a
at android.content.res.Resources.loadXmlResourceParser(Resources.java:2152)
at android.content.res.Resources.loadXmlResourceParser(Resources.java:2107)
at android.content.res.Resources.getLayout(Resources.java:857)
at android.view.LayoutInflater.inflate(LayoutInflater.java:394)
at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
at android.app.ProgressDialog.onCreate(ProgressDialog.java:165)
at android.app.Dialog.dispatchOnCreate(Dialog.java:415)
at android.app.Dialog.show(Dialog.java:284)
at com.company.game.MyClass$5.run(MyClass.java:333)
at android.os.Handler.handleCallback(Handler.java:605)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4477)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:788)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:555)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.io.FileNotFoundException: res/layout/progress_dialog.xml
at android.content.res.AssetManager.openXmlAssetNative(Native Method)
at android.content.res.AssetManager.openXmlBlockAsset(AssetManager.java:487)
at android.content.res.Resources.loadXmlResourceParser(Resources.java:2134)
... 17 more

我没有使用自定义 ProgressDialog。我给出了以下代码:

public static ProgressDialog mActivityInticator = null;

public static void ShowActivityInticator() 
{ 
  MyActivity.runOnUiThread(new Runnable() 
  { 
    @Override 
    public void run() 
    { 
      if(mActivityInticator == null) 
      { 
        mActivityInticator = new ProgressDialog(context); 
        mActivityInticator.setMessage("Loading..."); 
        mActivityInticator.setCancelable(false); 
      } 
      mActivityInticator.show(); 
    } 
  }); 
}

谁能告诉我为什么它会在某些设备上崩溃。

【问题讨论】:

  • 我们没有在您的源代码中看到您引用progress_dialog.xml,请发布相关代码。
  • @LazyNinja xml 由 getbaseContext() 方法返回,如果 iam 正确,这是他的活动 xml
  • getBaseContext()更改为Classname.this
  • @LazyNinja 我没有使用这个 XML 问题。
  • @glo 您是否尝试过清理您的项目并重新构建它?我觉得它在某些设备上工作很奇怪。

标签: android xml android-layout progressdialog


【解决方案1】:

更新

由于您使用cpp 并获得xml 异常,因此在设置中设置某些属性值可能是个问题。另一个解决方法是使用getParent() 而不是context。并在其中进行空检查

使用

runOnUiThread(new Runnable() 
{
    public void run() 
    {
       //your code
    }
}); 

不像你的评论

【讨论】:

  • 我的游戏是cpp。我正在显示进度对话框,直到我从代码的 cpp 端收到信号。所以我不能使用 AsyncTask
  • 我认为这不会在我的代码的 Java 端导致 ResourceNotFoundException。这是一个简单的 ProgressDialog。
  • 我对我的问题进行了更改。我没有使用“getBaseContext()”。我从不扩展 Activity 的类中调用该函数。我确实使用“this”将“上下文”保存到变量“上下文”中
  • 你从哪里调用这个 ShowActivityInticator()
  • 我从不同的点调用这个函数并从主线程运行它。我没有给出整个函数,因为它似乎没有必要。
猜你喜欢
  • 2012-07-18
  • 2022-10-06
  • 1970-01-01
  • 1970-01-01
  • 2010-12-13
  • 1970-01-01
  • 2013-11-19
  • 2014-07-13
  • 2011-09-02
相关资源
最近更新 更多