我找到了如何从其他应用程序获取资源。
我研究过很多关于此的帖子。
结果,提出以下来源。
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"
我该如何解决这个问题?请提出一些想法。
答案 0 :(得分:0)
解决!
这是不正确的。
查看themeLayout =(查看)themeR.getLayout(resID);
这是正确的。
查看themeLayout = LayoutInflater.from(this).inflate(themeR.getLayout(resID),null);