Readdy Write  
0,00 €
Your View Money
Views: Count
Self 20% 0
Your Content 60% 0

Users by Links 0
u1*(Content+Views) 10% 0
Follow-Follower 0
s2*(Income) 5% 0

Count
Followers 0
Login Register as User

Android: View Elemente mit Namen suchen

26.09.2018 (👁5754)


Wie findet man in einer Android App Anzeigelemente wie Buttons durch den Namen?

Lösung:

Hierzu verwendet man View.findViewById("name_des_Element")

In Android gibt es die Zuweisung von ID und Tag auf eine View Element zur Laufzeit.

Wenn man aber zur Laufzeit dann ein dynamisch erstelltes Element wie Texteingabe EditView oder einen Button sucht, dann kann man in der Regel mit der laufenden ID Nummer nichts anfangen.

Deshalb sucht man oft nach dem Namen wie "Button_Raimund" oder "Input_2018_10_01".

Hierzu verwendet man getViewbyTag

Man kann findViewWithTag nur auf Views anwenden. Deshalb sucht man erst das Layout der Seite

final LinearLayout root_Panel= findViewById(R.id.root_Layout);

 

Dann weden zur Laufzeit Elemente erstellt welche man ein Tag zuweist. 

wie hier Buttons

Button button1=new Button(this);
button1.setText(
"1: YELLOW");
button1.setTag(
"Button1");  //*=name

 

 

Später kann man das View-Element suchen und wie ein Objekt zur Laufzeit auswerten oder verändern.

Button btn = root_Panel.findViewWithTag("Button2");
String sCaption=btn.getText().toString();

 

 

 

Beispiel

Button 2 sucht Button 1 und wertet die Überschrift aus.

package com.codedocu.myapplication;

import android.app.AlertDialog;
import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

import android.widget.LinearLayout;
import android.widget.RelativeLayout;

public class MainActivity extends AppCompatActivity  {
   
//----------------------< Activity >----------------------

   
@Override
   
protected void onCreate(Bundle savedInstanceState) {
       
super.onCreate(savedInstanceState);
        setContentView(R.layout.
activity_main);
        create_Buttons();
    }


   
public void create_Buttons()
    {
        
//------------< create_Buttons() >------------
        //< get_Layout >
       
final LinearLayout root_Panel= findViewById(R.id.root_Layout);
       
//< get_Layout >

        //--< Element1 >--
       
Button button1=new Button(this);
        button1.setText(
"1: YELLOW");
        button1.setTag(
"Button1");  //*=name
       
button1.setBackgroundColor(Color.YELLOW);
        button1.setOnClickListener(
on_Button_clicked);

       
//< add >
       
root_Panel.addView(button1);
       
//</ add >
        //--</ Element1 >--

        //--< Element2 >--
        //*Inline-Event
       
Button button2=new Button(this);
        button2.setText(
"2: RED");
        button2.setTag(
"Button2");
        button2.setBackgroundColor(Color.
RED);
        button2.setOnClickListener(
new View.OnClickListener() {
           
@Override
           
public void onClick(View v) {
                Button btn =
root_Panel.findViewWithTag("Button1");
                String sCaption=btn.getText().toString();
                show_Messagebox(
"2->1 found =" + sCaption  , "inline-Event Button2");
            }
        });

       
//< add >
       
root_Panel.addView(button2);
       
//</ add >
        //--</ Element1 >--


        //------------</ create_Buttons() >------------
   
}


   
//===================< region: events >===================
   
View.OnClickListener on_Button_clicked = new View.OnClickListener() {
       
public void onClick(View v) {
           
final LinearLayout root_Panel= findViewById(R.id.root_Layout);
            Button btn = root_Panel.findViewWithTag(
"Button2");
            String sCaption=btn.getText().toString();
            show_Messagebox(
"1->2 found button2:=" + sCaption  , "onButton1_click");
        }
    };
   
//===================</ region: events >===================


    //============< region: system >==============
   
public void show_Messagebox(CharSequence  Message_Text, CharSequence Title) {
       
//--------------< fp_Messagebox() >----------------
        //< Message erstellen >
       
AlertDialog.Builder msg = new AlertDialog.Builder(this);
        msg.setTitle(Title);
        msg.setMessage(Message_Text);
        msg.setCancelable(
true);
       
//</ Message erstellen >

        //< anzeigen >
       
AlertDialog msgDialog = msg.create();
        msgDialog.show();
       
//</ anzeigen >
        //--------------</ fp_Messagebox() >----------------
   
}
   
//=============</ region: system >=============
    //===================</ Activity >======================
}

 

 

 

 

Activity_Main.xml

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
   
xmlns:android="http://schemas.android.com/apk/res/android"
   
android:id="@+id/root_Layout"
   
android:layout_height="match_parent"
   
android:layout_width="match_parent"
   
android:orientation="vertical"
   
>

</
LinearLayout>

 

 

java