• 0

[Java / Android] OnClick event, get the sender ID / tag


Question

First of all, my Java is fairly rusty (just started using again after a 6 year hiatus). I am working on this for Android 2.1

Goal:

I have multiple buttons, they all perform the same task, but with different data pulled from an array. For example, button1, button2, button3. I want to use the same onClick for all of them so they share the same code base. if button1 is clicked, text1 is updated, etc

The problem:

I can't figure out how to determine which of the buttons triggered the onClick event. I have seen references to getTag, and getId, but when I check what those contain while debugging, its always empty.

Is there a way to either get the button name in onClick, or maybe a way to pass it another parameter so I can just tell it to pass the ID when I set up the onClick listener?

Thanks!

8 answers to this question

Recommended Posts

  • 0
  On 28/04/2010 at 03:13, dontocsata said:

I believe that View passed to the onClick is the View which generated the click.

I've poked through the view that was passed, but couldn't find the button name in it, unless it's buried in some odd place?

  On 28/04/2010 at 12:28, El Marto said:

iv only ever written one game for android and it was a while agoo. dont you declare the id for each button in the xml file? may be wrong here

Yes you do, and that is what I am trying to find when onClick is triggered. Like dontocsata mentioned, I would think it would be somewhere in the view that was passed in, but if it is, I can't find it

  • 0

No, the View passed in is the Button, I believe. Try this.

so you have... (it changed the case of the objects/methods, but you get the idea)

Button button = //get via R.id, or whatever
Button button2 = //get via R.id, or whatever

OnClickListener myListener = new OnClickListener(){
	public void onClick(View v){
		if(v==button){
			//do something
		}else if(v==button2){
			//do something different
		}
	}
}

button.setOnClickListener(myListener);
button2.setOnClickListener(myListener);

  • 0

I always use this technique:

firstly give your buttons an id. Then do something like this:

Button btn1 = (Button) findViewById(R.id.button1);
Button btn2 = (Button) findViewById(R.id.button2);

btn1.setOnClickListener(myListener);
btn2.setOnClickListener(myListener);

//myListener:
public void onClick(View v) {

     switch (v.getId()) {
            case R.id.button1:
                     btn1.setText("1 clicked!");
                     break;


            case R.id.button2:
                     btn1.setText("2 clicked!");
                     break;
      }
}

  • 0

That worked! I ended up using the switch that al1uk posted as the basis of it. I now see I was completely misunderstanding what the view object was when it was getting passed through and what the getid was doing.

Thanks again everyone! Extremely helpful :D

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Posts

    • AMD Releases new GPU driver with Windows Server 2025 support and new Ryzen chips by Taras Buria AMD has released a new Pro Edition driver for customers with Radeon PRO graphics cards and certain AMD Ryzen PRO and Ryzen AI processors. These drivers get fewer updates than your standard Radeon Software drivers for mainstream gaming graphics cards, and their goal is to deliver a more stable experience with a bigger emphasis on performance and security for professional environments and use-case scenarios. AMD Software Pro Edition 25 Q2 is now available for download with the following update highlights: Support for AMD Ryzen AI PRO Series and AMD Ryzen AI Max 300 Series Support for Microsoft Windows Server 2025 And here is the list of known bugs: “Media Offline” error appears after importing certain 8K media files in DaVinci Resolve Terrain mapping images fail to load properly on Tresus MVPPro Issue with shadows when using the Subdivision Surface modifier in Blender EEVEE AMD Software Pro Edition 25 Q2 driver is compatible with 64-bit Windows 10 or 11 and Windows Server 2022 or 2025 systems with the following AMD processors and graphics cards: AMD Ryzen AI Series Radeon Pro Series Lenovo Mobile HP with AMD Ryzen Pro AMD Ryzen AI Pro Series AMD Ryzen AI Max+ 300 Series AMD Radeon PRO W7000 Series AMD Radeon PRO W6000 Series AMD Radeon PRO W5000 Series AMD Radeon PRO WX Series AMD Radeon Vega Frontier Edition Radeon PRO Duo (Polaris AMD Radeon PRO VII P16s Gen1 P16s Gen2 P14s Gen1 P14s Gen2 P14s Gen3 P14s Gen4 P14s Gen5 HP Loke (AMD Ryzen 9 Pro 7940HS) HP LoxW (AMD Ryzen 5 Pro 7640HS) HP Firefly 14 G11 A HP ZBook Power G11 You can download the AMD Software Pro Edition 25 Q2 driver from the official AMD support page. Full release notes are available on the same page as well.
    • Because of these forums, I decided to give Linux a try a few years ago. I started with Fedora, bounced around to Ubuntu, Mint, and I've landed on PopOS! and I love it. Other than my son's Macbook and his Chromebook, everything in the house runs PopOS!. When I switched my mother over to it, I showed her where the email icon was, and how to get to her Facebook, and I haven't heard a complaint. Linux is far more usable than it once was. I have a dedicated laptop that I try different distros out on all the time, but mostly I reside in Pop. What I love is if I do run into a problem, there are so many forum resources out there to find answers. Most times the distro itself will have user forums that already have a fix for the issue I'm facing. People ditching Windows 10, should they choose to, should at least try Linux. It might not be for them, but if it is, they enter a completely new world of computing. Waiting in the wings will always be Windows 11 or a Mac should they choose that route.
    • The real trick is to make sure the funds go to the right people. Anyone remember the African "famine" of the 1980s/early 1990s? A lot of that was local warlords preventing people from getting food and aid. Thousands of tons of food sat in warehouses and spoiled/got eaten by rodents and untold numbers of innocents perished. Dictatorship and corruption and rot has to be rooted out or else his money is just going to make the wrong people very rich.
  • Recent Achievements

    • Week One Done
      jrromero17 earned a badge
      Week One Done
    • One Month Later
      jrromero17 earned a badge
      One Month Later
    • Conversation Starter
      johnwin1 earned a badge
      Conversation Starter
    • One Month Later
      Marwin earned a badge
      One Month Later
    • One Year In
      fred8615 earned a badge
      One Year In
  • Popular Contributors

    1. 1
      +primortal
      228
    2. 2
      snowy owl
      156
    3. 3
      ATLien_0
      138
    4. 4
      Xenon
      128
    5. 5
      +FloatingFatMan
      127
  • Tell a friend

    Love Neowin? Tell a friend!