我需要随机生成一个按钮,然后从按钮打开的活动中抓取它的元素。特别是我在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(我将该行拆分为精确的。)
感谢任何帮助。如果有更好的方法,我不会感到惊讶,要求我废弃我的所有工作并重新启动。我不愿意,虽然大声笑。我会在一天中定期查看这篇文章,所以如果您有任何问题或需要更多细节,请发布或给我发消息。先谢谢你。
答案 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 */