gpt4 book ai didi

java - 如何制作字符串 'invokable' 然后将其转换为整数 (Android)

转载 作者:行者123 更新时间:2023-11-30 03:55:38 24 4
gpt4 key购买 nike

我试图通过使用 for 循环来初始化屏幕上我想要的所有 Sprite 来节省时间。我的可绘制文件夹中有几张图片。所以我相应地重命名了它们。我想将 i 连接到表达式,然后必须以某种方式调用/调用它!起初我想这样做:

Integer.parseInt("R.drawable.scoredisplay" + i)

然后,当然你不能将其解析为整数,而且该表达式的结果无论如何都会返回一个整数。如何将表达式与 i 连接起来,然后调用它?可能吗?

最佳答案

有可能,你需要做到以下几点:

Context x = getApplicationContext();
int myId = x.getResources().getIdentifier("R.drawable.scoredisplay" + i, "drawable",x.getPackageName());

第一个参数是你想要获取的 ViewString id,第二个参数是资源的类型,在本例中是“drawable”,并且第三个是我们也从上下文中获取的包名称,调用 getPackageName() 方法。然后你可以通过以下代码获取 View :

View myView = findViewById(myId);

按照您的想法将字符串转换为整数是没有意义的,因为 id 不是字符串(尽管它有一个解决方法,就像我向您展示的那样)。

更新

由于您在 Activity 类之外使用此代码,因此对 Context 方法的调用无效。您需要创建一种从 Activity 外部访问 Activity Context 的方法(您提到从您的类调用 .getContext() ,但这将获取该类上下文,不是 Activity )。实现此目的的一种方法是修改您的构造函数,假设您有一个名为 myClass 的类:

class myClass{
//Declase a Context variable inside your class
Context x;

//You implement a constructor for this class that accepts a Context as
//a parameter (feel free to add more if you are using a constructor already)
public myClass(Context applicationContext){
//Assign the passed value to your local Context
x = applicationContext;
}

//Afterwards, on a different part of your class, you could invoke activity
//related methods by using the Context you have 'x'
public void otherMethod(){
int myId = x.getResources().getIdentifier("R.drawable.scoredisplay" + i, "drawable",x.getPackageName());
}
}

确保您从 Activity 正确传递值的最后一部分,您应该在代码中的某处看到与此类似的内容:

myClass i = new myClass();

由于我们现在有了一个构造函数,或者已经修改了现有的构造函数,您可以添加 this 以将 Activity 上下文直接传递到您的游戏或您创建的任何类中:

myClass i = new myClass(this);//'this' can be 'getApplicationContext()'

关于java - 如何制作字符串 'invokable' 然后将其转换为整数 (Android),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13408764/

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