In the onCreate() method of my class I make a grid of buttons, and give them tags to identify them, for example:
This is working fine. Now I want to make a new temporary button within a method, and I’m using this code:
String s = "one four"; Object o = s; View view = new View(this); Button button = (Button)view.findViewWithTag(o);
But button always comes out as “null”. And I don’t know why.
You must call
And you dont need to do this
Object o = s;,
view.findViewWithTag(s); will do the same.
View view = new View(this); – you create a new instance of
view does not have any children. You must call
findViewWithTag(s) method from layout which contains your
Try not assigning the string to the object variable and set the tag directly to be your string.
Mavix, findViewWithTag traverse all child views and works fine in ViewGroup. Try this:
// after button.setTag("one four"); ViewGroup v = (ViewGroup) findViewById(R.id.myFirstLayoutIdInXmlLayoutFile); Button b = (Button) v.findViewWithTag("one four");
I had the same doubt. In my situation, I have a Main Layout and a Secondary Layout (inside the Main) – the two were RelativeLayout’s – and I want to get the components I had added on the screen.
But I had to use dynamic keys (which could be repeated)and were the unique parameter I could use to Identify the components.
Like Natali, in her response, I use “TAG” in the components and worked for me. See below (using Button as example):
Step 1: Declare a button-type variable.
Button btn = new Button(this); // this is Context of my Activity
Step 2: Set any key.
String any_key = "keyToGetButton";
Step 3: Set tag (key setted in step 2) to your button.
Step 4: Get your button by tag (in other method, for example).
Button button = (Button) your_layout_where_is_button.findViewWithTag(any_key);