如何引用随机生成的按钮的元素

时间:2016-06-23 17:01:12

标签: java android button android-intent random

我需要随机生成一个按钮,然后从按钮打开的活动中抓取它的元素。特别是我在PersistentData中指定的“字符”的通用ID。 (但是整个班级工作正常。问题出在这个活动和下一个活动之间。)子活动有多个可以调用它的活动。 (有一些活动包含来自池中不同字符的列表,每个列表都有这些按钮,如下所示,这些按钮都指向同样的活动,根据其所谓的数据从PersistentData加载信息从所述按钮拉出。)以下1个代码块位于此活动的onCreate方法中。 (自动生成,我刚从XML文件调用布局后添加了这个)

class Factory(object):
    name = ""

    def __init__(self):
        self.inQ = Queue.Queue()
        self.outQ = Queue.Queue()

这是gotoActivity()。 (在课堂上,不是onCreate)

for (fID = 0; fID < PersistentData.fName.size(); fID++) {

        if (PersistentData.fName.get(fID) != null) {
            Button[] Btn = new Button[PersistentData.fName.size()];
            Btn[fID].setHeight(200);
            Btn[fID].setWidth(200);
            Btn[fID].setTextSize(40);
            Btn[fID].setText(PersistentData.fName.get(fID));
            Btn[fID].setTag(fID);
            Layout.addView(Btn[fID]);
            Btn[fID].setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                    int btnID = fID;
                    gotoActivity(v);

                }

            });

        } else continue;

    }
实际上,我已经把几件东西放在那里了。大多数情况下,他们已经通过各种方式在创建按钮时声明变量。

这是TargetActivity.class

public void gotoActivity(View view) {
    Intent intent = new Intent(this, TargetActivity.class);
    startActivity(intent);
    intent.putExtra("btnClicked", /*IDK WHAT TO PUT RIGHT HERE*/);
}

我应该把另外一节课放到哪里**? (fID)是我想要得到的东西。我已经尝试使用Android中的“创建活动”页面中描述的方法来放置和获取fID,并且它继续在第***行给我一个NullPointerException(我将该行拆分为精确的。)

感谢任何帮助。如果有更好的方法,我不会感到惊讶,要求我废弃我的所有工作并重新启动。我不愿意,虽然大声笑。我会在一天中定期查看这篇文章,所以如果您有任何问题或需要更多细节,请发布或给我发消息。先谢谢你。

1 个答案:

答案 0 :(得分:0)

我认为你得到NullPointerException的原因是因为你在坚持额外的事情之前就开始了活动。 在gotoActiviy中,确保在启动活动之前调用extra(s)方法。

public void gotoActivity(View view) {
 Intent intent = new Intent(this, TargetActivity.class);
 intent.putExtra("btnClicked", "Strings");
 startActivity(intent);

}

正如你所看到的,一个字符串是额外的,你可以把任何变量类型作为额外的只是确保在被调用的活动,相同的变量类型获得额外的。 作为一个例子

String getValue = getIntent().getExtras().getString("btnClicked");
Int getValue = getIntent().getExtras().getInt("btnClicked");
/** If integer was the value activity extra */