Java 正确地强制转换字符串键参数以放入Intent
我需要根据数组的大小动态地向意图中添加额外内容。我尝试将键的名称与计数器的值连接起来,但没有效果Java 正确地强制转换字符串键参数以放入Intent,java,android,Java,Android,我需要根据数组的大小动态地向意图中添加额外内容。我尝试将键的名称与计数器的值连接起来,但没有效果 for(int i = 0; i < pos_list.size(); i++) { int pos = pos_list.get(i); String EXTRA_NAME = "DetailActivityFragment.EXTRA_NAME_" + Integer.toString(i); data.putExtra(EXTRA_NAME, tablet_lis
for(int i = 0; i < pos_list.size(); i++) {
int pos = pos_list.get(i);
String EXTRA_NAME = "DetailActivityFragment.EXTRA_NAME_" + Integer.toString(i);
data.putExtra(EXTRA_NAME, tablet_list[pos].getTabletName());
}
for(int i=0;i 字符串EXTRA_NAME=“DetailActivityFragment.EXTRA_NAME”+Integer.toString(i);
data.putExtra(额外名称,tablet\u列表[pos].getTabletName());
}
不管怎样,我能让它工作吗?甚至可能吗?这段代码容易出现的错误就在这一行
String EXTRA_NAME = "DetailActivityFragment.EXTRA_NAME_" + Integer.toString(i);
由于您使用的是
”
,因此您的密钥实际上变成了DetailActivityFragment。EXTRA\u NAME\u n
其中n
是一个整数。由于DetailActivityFragment包含一组常量,您应该删除“
”以实际访问它们
String EXTRA_NAME = DetailActivityFragment.EXTRA_NAME_ + Integer.toString(i);
另外,在检索值时,如果在输入值时使用了值,请确保使用”
,如果希望使用片段中定义的静态值,请确保不使用这些值
编辑:由于DetailActivityFragment
包含多个字段,并且您希望基于Integer
检索这些字段,因此一个潜在的解决方案是在DetailActivityFragment
中为它们创建get()
方法。例如,在该片段
定义中(您可能还需要将该设置为静态
,除非您可以引用片段的对象而不是静态引用)
现在你把多余的东西放进去做什么
String EXTRA_NAME = DetailActivityFragment.getExtraName(i);
检索值时,使用相同的方法获取键
另一种解决方案是使用映射
检索值。您最初尝试的是(据我所知)反射,我对此一无所知,但您可以查看。试试这个
替换
字符串EXTRA_NAME=“DetailActivityFragment.EXTRA_NAME”+Integer.toString(i)
有,
字符串EXTRA\u NAME=“DetailActivityFragment.EXTRA\u NAME”+i
“+”这是串联,它固有地将i转换为字符串。“DetailActivityFragment.EXTRA_NAME_”似乎是一个常量,但您将其用作一个字符串,表示“DetailActivityFragment.EXTRA_NAME_”,这是有意的?@milez我在DetailActivityFragment中定义了一组常量字符串用作键。我基本上是在尝试实现使用for循环调用putExtra(DetailActivityFragment.EXTRA\u NAME\u 0,…),putExtra(DetailActivityFragment.EXTRA\u NAME\u 1,…)等的效果,但是EXTRA\u NAME\u不存在于DetailActivityFragment中,因为我实际上定义并初始化了EXTRA\u NAME\u 0,EXTRA\u NAME\u 1,EXTRA_NAME_2 etcI在执行Integer.toString之前尝试了该操作,但无效!
String EXTRA_NAME = DetailActivityFragment.getExtraName(i);