按钮背景图像未显示从另一个应用程序的资源

时间:2014-09-15 08:23:00

标签: android android-layout

我有两个应用程序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)

请帮我解决这个问题。

3 个答案:

答案 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));