1. Mitglieder surfen ohne Werbung auf Android-Hilfe.de! ✔ Jetzt kostenlos Mitglied in unserer Community werden.
  1. no1Ltan, 27.08.2018 #1
    no1Ltan

    no1Ltan Threadstarter Android-Hilfe.de Mitglied

    Hallo,

    bisher habe ich es in meinen Programmcodes so gestaltet, dass ich einer Variable eine ID zugewiesen habe,
    als dieser auch eine Funktion zuweisen wollte.
    Z.B.:
    Code:
       Button buttonSilver = findViewById(R.id.button_silver);
       buttonSilver.setOnClickListener(new View.OnClickListener()
       {
           @Override
           public void onClick(View v)
           {
               setColor(getResources().getColor(R.color.silver), getResources().getColor(R.color.black)); // Load setColor method and send 2 color values
           }
       });
    
    Allerdings ist es für mich einfacher und schneller, den Variablen die IDs als Liste zuzuweisen, da ich dafür Excel und AutoHotkey nutzen kann.
    z.B.
    Code:
       Button buttonWhite = findViewById(R.id.button_white);
       Button buttonSilver = findViewById(R.id.button_silver);
       Button buttonYellow = findViewById(R.id.button_yellow);
       Button buttonOrange = findViewById(R.id.button_orange);
       Button buttonRed = findViewById(R.id.button_red);
       Button buttonPink = findViewById(R.id.button_pink);
    
    Der Nachteil dieser Arbeitsweise ist jedoch, dass ich beim Öffnen des Programmcodes immer regelrecht erschlagen werde,
    da am Anfang nur IDs zu sehen sind.

    Daher hatte ich 2 Ideen:
    1) Zeilen ausblenden
    Hat nicht geklappt, da Android Studio immer die kompletten Methoden ausblendet.
    Befinde ich mich - wie in diesem Fall - in der onCreate-Methode, werden auch wichtige Zeilen ausgeblendet

    2) Extra Methode für das Zuweisen der Variablen/IDs anlegen
    Also das hier hat auf jeden Fall schon mal NICHT geklappt:
    Code:
    import android.app.Activity;
    import android.content.SharedPreferences;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.widget.Button;
    
    public class Page_4_Colors extends Activity
    {
        int pos;
        protected void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.page4_colors);
            linkIds(); // Link variables and Ids
    
            buttonWhite.setOnClickListener(new View.OnClickListener()
            {
                @Override
                public void onClick(View v)
                {
                    setColor(getResources().getColor(R.color.white), getResources().getColor(R.color.black)); // Load setColor method and send 2 color values
                }
            });
            buttonSilver.setOnClickListener(new View.OnClickListener()
            {
                @Override
                public void onClick(View v)
                {
                    setColor(getResources().getColor(R.color.silver), getResources().getColor(R.color.black)); // Load setColor method and send 2 color values
                }
            });
        }
        public void setColor (int backgroundColor, int textColor) // Write color values into SharedPreferences
        {
            SharedPreferences prefs = getSharedPreferences("MY_SHARED_PREF", MODE_MULTI_PROCESS); // Create new SharedPreferences instance
            SharedPreferences.Editor editor = prefs.edit(); // Assign variable to editor function
            if (pos == 1)
            {
                editor.putInt("backgroundColorLeft", backgroundColor); // Write background color (int) inside of editor
                editor.putInt("textColorLeft", textColor); // Write text color (int) inside of editor
            }
            if (pos == 2)
            {
                editor.putInt("backgroundColorRight", backgroundColor); // Write background color (int) inside of editor
                editor.putInt("textColorRight", textColor); // Write text color (int) inside of editor
            }
            editor.apply(); // Save values, close process
            this.finish(); // Close this activity
        }
        protected void linkIds() // Link variables and Ids
        {
            Button buttonWhite = findViewById(R.id.button_white);
            Button buttonSilver = findViewById(R.id.button_silver);
            Button buttonYellow = findViewById(R.id.button_yellow);
            Button buttonOrange = findViewById(R.id.button_orange);
            Button buttonRed = findViewById(R.id.button_red);
            Button buttonPink = findViewById(R.id.button_pink);
        }
    }
    
    Habt ihr eine Idee, wie sich das Lösen lässt?
    Klar ist es kein großes Problem, aber speziell bei Anfängern wie mir ist weniger Programmcode
    auch weniger verwirrend.
    Da kann man sich auf das wesentliche konzentrieren statt ständig X IDs überfliegen zu müssen.

    Grüße
     
  2. jogimuc, 27.08.2018 #2
    jogimuc

    jogimuc Erfahrener Benutzer

    Hi
    Das kann leider nicht gehen . Denn die in der Methode linkIds() erstellten Variablen sind lokal die sind nur innerhalb der Methode verfügbar. Dafür müsstest du Klassenvariablen (global) im Klassenrupf benutzen.

    Schaue dir das mit den Gültigkeiten von Variablen in Java noch mal an.
     
    Zuletzt bearbeitet: 27.08.2018
    no1Ltan bedankt sich.
  3. no1Ltan, 27.08.2018 #3
    no1Ltan

    no1Ltan Threadstarter Android-Hilfe.de Mitglied

    Hi,
    Ok, danke für die Info!
    Habe es mittels Zeilen ausblenden hinbekommen.

    Zeilen markieren -> Rechtsklick -> Folding -> Fold selection / Remove region.

    Grüße
     
  4. deek, 27.08.2018 #4
    deek

    deek Android-Experte

    Ich empfehle Butterknife für das ViewBinding.
    Butter Knife
     
  5. jogimuc, 28.08.2018 #5
    jogimuc

    jogimuc Erfahrener Benutzer

    Hi wenn du etwas mehr Ordnung und Stuckatur in deinen Code bekommen willst ist dieses Beispiel. vielleicht was für dich.


    Code:
    public class MainActivity extends AppCompatActivity implements View.OnClickListener  {
       
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
               
            ((Button)this.findViewById(R.id.button1)).setOnClickListener(this);
            ((Button)this.findViewById(R.id.button2)).setOnClickListener(this);
           // Beispiel 2
            ((Button)this.findViewById(R.id.ButtonStart)).setOnClickListener(new   click());  // wenn du es in einer eigenen Klasse haben willst
        }
    
    
        @Override
        public void onClick(View v) {
                
            switch (v.getId()){
                case R.id.button1 :
                    // dein Code für Button 1
                    break;
    
                case  R.id.button2 :
                   // dein Code für Button 2
                    break;
             
            } 
       }
    
    // innere Klasse wird nur benötigt für Bespiel 2, so hast du wieder für jeden Button einene eigene onClick Methode.
    
      class click implements View.OnClickListener {
          @Override
          public void onClick(View v) {
          }
       }
    
    
    }
     
    Zuletzt bearbeitet: 29.08.2018
Die Seite wird geladen...
Ähnliche Themen Forum Datum
Java Methode manchmal richtig ausgeführt, manchmal nicht Android App Entwicklung 28.08.2018
methoden holen geht nicht mehr. Android App Entwicklung 30.06.2018
Classen Methoden ,deren Aufruf und meine Anfänger Probleme. HILFE !!! Android App Entwicklung 18.04.2018
Du betrachtest das Thema "Methode fürs Verlinken von Variablen mit IDs?" im Forum "Android App Entwicklung",
  1. Android-Hilfe.de verwendet Cookies um Inhalte zu personalisieren und dir den bestmöglichen Service zu gewährleisten. Wenn du auf der Seite weitersurfst stimmst du der Cookie-Nutzung zu.  Ich stimme zu.