Projekt-Anfragen: Tel: 07022/9319004 info@CodeDocu.de Software Entwicklung in C# WPF Asp.Net Core Vba Excel Word SQL-Server EF Linq, UWP Net
#

Android: onClick in Fragment for Multiple Button Views

 

Wenn man in Android von einer Activity Seite in ein Fragment wechselt, dann können einige Funktionen nicht übernommen werden.

Zunächst steht der android:onClick=".." Eintrag in der xml Seite nicht mehr zur Verfügung.

Die Events des Fragments werden immer erst an die übergeordnete Activity gesendet.

 

Lösung:

Man muss den onClick=".." Eintrag übertragen von der layout/fragment.xml Seite zu der Codebehind seite in java/project/fragment_page.java und diese mit einem onClickListener an einer Resource verbinden.

 

Betrifft:

View Elemente in einem Android Fragment, welche auf den onClick Event reagieren sollen, wobei  in der .xml Seite der android:onClick=".." verwendet ist.

 

 

<Switch
   
android:id="@+id/SwitchAlarm0"
   
android:layout_row="0"
   
android:layout_column="0"
   
android:onClick="SwitchAlarmOnClick"
   
/>

 

 

 

 

Lösung in der .java Seite des Fragments:

 

In der Fragment.java Code Seite fügt man über Ctrl+O die Override Methode onViewCreated ein. Diese Methode wird aufgerufen, sobald die Fragment als View erstellt ist.

 

@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {

.. …here onClickListener..

 

 

Wenn man mehrere Views abfangen möchte zum Beispiel mehrere Buttons die alle auf den gleichen onClick Event reagieren sollen, dann kann man die Elemente im for-Loop durchlaufen.

Im Beispiel hier werden alle Switch-View Elemente mit der Bezeichnung "SwitchAlarm" 0 bis 6 durchlaufen

Zunächst wird die ID der Fragment Resource in Layouts gesucht und anschliessend mit .setOnClickListener eine Bindung an genau diese Resource erstellt.

 

@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
   
//------------< onViewCreated() >------------
   
super.onViewCreated(view, savedInstanceState);
   
//< init >
   
this.fragmentView =  view ;
   
//</ init >

    //----< route switch events >----
    //*get onClick() evente from multiple views in fragment
   
for (int iSwitch=0;iSwitch<7;iSwitch++)
    {
       
int idView=getResources().getIdentifier("SwitchAlarm" + iSwitch,"id", getContext().getPackageName());
       
View eventView =view.findViewById(idView);
       
eventView.setOnClickListener(new View.OnClickListener() {
                                    
@Override
                                    
public void onClick(View view) {
                                         SwitchAlarmOnClick(view);
                                     }
                                 }
        );
    }
   
//----</ route switch events >----

 

 

Mobile
»
Android Durchstreichen von Text
»
Android crashes bei .setText in Timer run
»
Wie kann man eine Android Activity schließen
»
Android Code zum AN und AUS Schalten zweier Timer
»
Android: onClick in Fragment for Multiple Button Views
»
Android Java: Text aus einer Resource File lesen
»
Android: einfacher Color-Picker
»
Android: View Elemente mit Namen suchen
»
Android Java: View Event zur Laufzeit erstellen und einem View Element zuordnen
»
Android Java: View Button zur Laufzeit erstellen

.

Jobs, Projekte, Angebote für Freiberufler, Selbstständig an Info@CodeDocu.de