如何从其他应用程序获取资源?

时间:2014-02-12 05:55:12

标签: android xml layout

我找到了如何从其他应用程序获取资源。

我研究过很多关于此的帖子。

结果,提出以下来源。

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Resources themeR = null;
    try {
        themeR = getThemeResources("com.example.testskin01", this);
    } catch (NameNotFoundException e) {
        e.printStackTrace();
    }

    int resID = themeR.getIdentifier("activity_main2" , "layout", "com.example.testskin01");

    View themeLayout = (View)themeR.getLayout(resID);

    setContentView(themeLayout);    
}

private static Resources getThemeResources(String themePackage, Context context) throws NameNotFoundException {
    try {
        return context.getPackageManager().getResourcesForApplication(themePackage);
    } catch (Exception e) {
        return null;
    }
}

我在测试设备上安装了“com.example.testskin01”的包装 “activity_main2.xml”。

当调用“resID”时,没有发生错误。

但下一行,来自

的错误
"View themeLayout = (View)themeR.getLayout(resID);".

这是错误信息。

"java.lang.ClassCastException: android.content.res.XmlBlock$Parser"

我该如何解决这个问题?请提出一些想法。

1 个答案:

答案 0 :(得分:0)

解决!

这是不正确的。
查看themeLayout =(查看)themeR.getLayout(resID);

这是正确的。
查看themeLayout = LayoutInflater.from(this).inflate(themeR.getLayout(resID),​​null);