DetailActivityFragment

DetailActivityFragment

我需要根据数组的大小向目标动态添加额外内容。我试图将密钥的名称与计数器的值连接起来,但无济于事

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/

10-10 04:28