gpt4 book ai didi

java - 使用安卓 getIdentifier()

转载 作者:IT老高 更新时间:2023-10-28 20:34:04 25 4
gpt4 key购买 nike

我试过了:

r = Resources.getSystem().getIdentifier("ball_red","drawable","com.Juggle2");
Log.i("FindBall","R = "+r);

还有这个:

r = Resources.getSystem().getIdentifier("com.Juggle2:drawable/ball_red", null, null);

但 'r' 总是以零结束。

我从一个不是 Activity 且不扩展任何东西的辅助类内部调用这一行,所以我不能简单地调用 getResources(),但我可以从我的SurfaceView.

最后,我想将 "ball_red" 替换为一个变量,但首先要做的是。这不起作用。

com.Juggle2 确实是我的包名。 drawable 是它所在的 res 文件夹,文件名确实是 ball_red

R.java 说:

        public static final int ball_red=0x7f020027;

所以我不确定为什么它不起作用。


所以我不能使用资源,我必须传递一个上下文,我这样做是这样的:里面:

class Collection extends SurfaceView implements SurfaceHolder.Callback {

我正在为我的类创建一个新实例,并将其 getContext() 作为参数传递。

最佳答案

既然你在一个 Activity 中,写就足够了

int resId = YourActivity.this.getResources().getIdentifier(
"ball_red",
"drawable",
YourActivity.this.getPackageName()
);

或者如果你不是从内部类调用它

int resourceID = getResources().getIdentifier(
"ball_red",
"drawable",
getPackageName()
);

注意

getIdentifier() Returns 0 if no such resource was found. (0 is not a valid resource ID.)

检查

还要检查你的 R.java 中是否有一个名为 ball_red

drawable

例如:

public static final class drawable {
public static final int ball_red = 0x7f020000;
}

编辑如果您没有参与任何 Activity ,那么您必须传递 context 而不是资源作为参数 然后执行此操作

int resId = context.getResources().getIdentifier(
"ball_red",
"drawable",
context.getPackageName()
);

关于java - 使用安卓 getIdentifier(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15488238/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com