【问题标题】:Find the id of the button that called intent/activity? Android找到调用意图/活动的按钮的 id?安卓
【发布时间】:2012-01-12 22:36:14
【问题描述】:

我的主要活动布局包含 10 个不同的按钮,它们都调用相同的活动 (MapsActivity)。

如何找出从 MapsActivity 按下的按钮的 ID?我尝试使用

发送它

intent.putExtra("id", id);

但是当按下任何按钮时,这个 id 出来的结果都是一样的。

我是否需要为调用相同活动的每个按钮创建单独的意图?或者我可以使用 1 个意图并仅更改它传递给 MapsActivity 的值吗?

我希望我已经足够清楚地解释了这个问题!谢谢!

【问题讨论】:

  • 您使用 findViewById(...) 来获取按钮吗?您传递给此函数的参数是按钮 ID,不是吗?
  • 是的,我使用 findViewById(..) 来获取按钮并设置它的 onClickListener,这是我创建意图的地方
  • 您是否对多个按钮使用相同的侦听器?如果没有,你可以硬编码吗?
  • 请出示您获取id的代码

标签: android button android-activity android-intent bundle


【解决方案1】:

您说您使用 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(不要显然给他们4个,呵呵)。这应该在添加点击监听器的同时完成。另外,请确保您知道哪个按钮获取哪个数字,以便您稍后检查。

在 MapsActivity 中获取 id

一旦 mapsActiviy 启动,我们就会想要那个 id。我们使用以下行(在 MapsActivity 类中)执行此操作:

 int id = getIntent().getIntExtra("button_id");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-18
    • 2015-04-27
    • 1970-01-01
    相关资源
    最近更新 更多