我的主要活动布局包含10个不同的按钮,它们都调用相同的活动(MapsActivity)。
如何找出从MapsActivity按下的按钮的ID?我尝试使用
发送它intent.putExtra(“id”,id);
但是当按下任何一个按钮时,这个id也是一样的。
我是否需要为每个调用相同活动的按钮创建单独的意图?或者我可以使用1个intent并只更改它传递给MapsActivity的值吗?
我希望我已经清楚地解释了这个问题!谢谢!
答案 0 :(得分:2)
你说你用findViewById将监听器添加到你代码中的按钮,所以我假设你的要求意味着你无法在xml中设计你的布局。因此,当您设置第一个活动时,保存所有这些按钮的活动,确保它们都获得相同的点击监听器。我们可以调用这个监听器方法mapsButtonListener
。它应该这样声明:
public void mapsButtonListener(View sender) {
int id = sender.getId();
Intent mapsActivity = new Intent(getApplicationContext(), MapsActivity.class);
mapsActivity.putExtra("button_id", id);
startActivity(mapsActivity);
}
关于我们按钮的ID:s
如果您使用xml设计放置按钮,那么只需确保它们在xml中声明了id:s。但是,如果你不使用xml这些,而是在代码中实例化它们,那么你将不得不使用方法setId(4)
给你的按钮id:s(don显然,给他们所有人4,呵呵)。这应该在添加点击监听器的同时完成。此外,请确保您知道哪个按钮获得了什么号码,以便稍后查看。
在MapsActivity中获取ID
一旦mapsActiviy启动,我们就会想要那个id。我们使用以下行(在MapsActivity类中)执行此操作:
int id = getIntent().getIntExtra("button_id");