当前位置: 首页 > 知识库问答 >
问题:

如何使类在Intent中可变:Intent Intent=new Intent(getApplicationContext())。这个,变量。类别);

田兴怀
2023-03-14

我创建了一个“设置活动”,其中有一个单选按钮组和三个按钮。每个按钮都被编码为向SharedReferences传递不同的字符串。每个字符串都是项目中活动的名称。1)美元活动2)动态增强3。)静态百分比活动

(我使用设备文件资源管理器确认字符串已成功保存到share dPreduce)

我的想法是检索保存到共享首选项的字符串数据并替换构成下面Intent一部分的varActive。

Intent intent = new Intent(getApplicationContext().this, varActivity.class);
startActivity(intent);

我试图创建一个html" target="_blank">变量“varActivity”,从SharedReferences中重设相关字符串,但它不起作用。Android Studio提示我创建类varActivity或innerclass varActivity或接口varActivity。我尝试了创建类的方法,但是这一努力产生了需要解决的添加问题(公共静态void/公共void活动之间的兼容性问题)。

是否有某种方法可以从share首选项中检索字符串并将varActive替换为新的字符串数据。

共有1个答案

宦树
2023-03-14

没有办法按名称启动活动,但如果您将具有名称的类放在Map中,您的任务仍然可以实现。

Map<String, Class> activities = new HashMap<String, Class>() {{
    put("DollarActivity", DollarActivity.class);
    put("DynamicPercentActivity", DynamicPercentActivity.class);
    put("StaticPercentActivity", StaticPercentActivity.class);
}};
...
new Intent(this, activities.get(nameFromPreferences));

无论如何,我绝对建议你重新思考你试图解决的任务,并找到更好的解决方案

 类似资料:
  • 我有两个班级。首先是MainActivity.kt,我有一些字符串。第二个是像这样的ServiceBuilder.kt 我需要正确地将字符串从 MainActivity 传输到此对象。我认为在ServiceBuilder中创建MainActivity对象不是一个好主意,因为它分配了多余的内存。使用数据库或共享首选项也不是一个好主意,因为这种调用会减慢工作程序的速度,并且这种技术是为解决其他问题而创

  • 问题内容: 为了使一类不变,我可以做的是: 1)将类设为final 2)不提供设置器 3)将所有变量标记为final 但是,如果我的班级有另一个班级的另一个对象,那么somone可以更改该对象的值 问题答案: A)也使不可变 要么 B)不允许直接访问对象,而是仅提供获取器以充当代理。 编辑添加: 您 可以 制作一个深层副本并返回一个副本,而不是原始副本,但这通常不是您在Java中期望的行为类型。

  • 我的主班里有一个学生班。Student类包含Id和名称。在我的主要班级里,我正在把这三个学生加到名单上。现在我需要取名字不应该为空的第一个学生。为此,我使用了java stream()类,其中包含findFirst()方法来获取第一个匹配值。因此返回类型是可选的。 这是我写的 我该怎么整改呢?

  • 问题内容: 我正在尝试创建一个分页类,并使用该类外部的变量。 但这给了我致命错误“在非对象上调用成员函数query()”。 这是索引文件: 这是pagi.php文件: 是否可以在类内部使用该变量,而无需在类内部创建新变量? 问题答案: 解决此问题的正确方法是将数据库对象注入另一个类(依赖项注入): 解决该问题的另一种方法是将数据库类的实例注入使用它的方法中: 您选择哪种方法取决于情况。如果只有一个

  • 问题内容: 我想像这样重构代码: 我如何在Eclipse中自动执行此操作,因此x的类型提升到很长会导致因变量也改变其类型: ? 问题答案: 我通常的做法是将上游变量之一更改为long。这将导致Eclipse在每个您提供长值而不是int的赋值中给出错误。然后,我只需在每个控件上选择ctrl-1(快速修复),然后选择“将变量x更改为long”。 当新的类型不能直接分配给旧的类型时,此方法有效。

  • 问题内容: 我想检查数组的元素是否是Swift中UILabel的子类: 不与目标c搭桥。 问题答案: Swift让运算符测试值的类型: 顺便说一句,这仍然会产生,而不是。从Swift 2 beta系列开始,您可以为此使用flatMap: 以前(Swift 1),您可以投射,虽然可以,但是感觉有点难看。 否则,您需要某种方式来构建仅包含标签的列表。不过,我看不到任何标准。也许像这样: