我需要根据数组的大小向目标动态添加额外内容。我试图将密钥的名称与计数器的值连接起来,但无济于事
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());
}
无论如何,我可以使它正常工作吗?可能吗
最佳答案
这段代码很容易出现的错误在此行上
String EXTRA_NAME = "DetailActivityFragment.EXTRA_NAME_" + Integer.toString(i);
由于您使用的是
" "
,因此密钥实际上是DetailActivityFragment.EXTRA_NAME_n
,其中n
是整数。由于DetailActivityFragment包含一堆常量,因此您应该删除" "
才能实际访问它们String EXTRA_NAME = DetailActivityFragment.EXTRA_NAME_ + Integer.toString(i);
另外,请确保在检索值时使用
" "
(如果在放置值时使用了它们),或者在希望使用Fragment
中定义的静态值时不使用它们。编辑:由于
DetailActivityFragment
包含多个字段,并且您希望基于Integer
检索这些字段,因此可能的解决方案是在get()
中为其创建DetailActivityFragment
方法。例如,在该Fragment
定义中(您可能还需要创建此static
,除非您可以引用片段的对象而不是静态引用)public String getExtraName(int index)
{
if (index == 0)
{
return EXTRA_NAME_0;
} else if (index == 1)
{
return EXTRA_NAME_1;
} //etc
}
现在,当你把自己的额外
String EXTRA_NAME = DetailActivityFragment.getExtraName(i);
当您检索值时,请使用相同的方法获取密钥。
另一种解决方案是使用
Map<Integer, String>
检索值。据我所知,您最初尝试做的是反射,但我对此一无所知,但是您可以查看this question。关于java - 适本地转换字符串键参数以放入Intent,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31646300/