我有两个应用程序A1和A2。在A1我有draw.xml文件夹里面的button.xml。在A2我有一个按钮,我想将按钮的b ackground图像设置为button.xml 我正在使用的代码:
Context otherAppContext = getApplicationContext()
.createPackageContext("com.gincy.A1",
Context.CONTEXT_IGNORE_SECURITY);
int drawableResourceId = otherAppContext.getResources().getIdentifier("button",
"drawable", otherAppContext.getPackageName());
button_layout.setBackground(drawableResourceId);
我使用上面的代码,它会显示错误
09-15 06:44:30.469: E/AndroidRuntime(1908): FATAL EXCEPTION: main
09-15 06:44:30.469: E/AndroidRuntime(1908):android.content.res.Resources$NotFoundException: Resource ID #0x7f020058
09-15 06:44:30.469: E/AndroidRuntime(1908): at android.content.res.Resources.getValue(Resources.java:1013)
09-15 06:44:30.469: E/AndroidRuntime(1908): at android.content.res.Resources.getDrawable(Resources.java:658)
09-15 06:44:30.469: E/AndroidRuntime(1908): at android.view.View.setBackgroundResource(View.java:14179)
请帮我解决这个问题。
答案 0 :(得分:0)
你必须使用
getResources().getDrawable(R.drawable.drawableResourceI);
您无法将ID设置为背景,您可以使用该drawable的ID从资源中获取它。
答案 1 :(得分:0)
你可以这样:
Drawable anotherAppDrawable = context.getPackageManager().getResourcesForApplication("com.gincy.A1").getDrawable("button");
答案 2 :(得分:0)
您已经传递了资源的id而不是要在后台设置的实际Drawable资源项。所以试试吧。希望它会对你有所帮助。
而不是使用
int drawableResourceId = otherAppContext.getResources().getIdentifier("button",
"drawable", otherAppContext.getPackageName());
button_layout.setBackground(drawableResourceId);
尝试使用
button_layout.setBackgroundDrawable(getResources().getDrawable(R.drawable.button));