Hintergrundfarben übergeben

  • 12 Antworten
  • Neuester Beitrag
Diskutiere Hintergrundfarben übergeben im Tipps und Anleitungen zur Code-Entwicklung im Bereich Android App Entwicklung.
A

AndyR

Neues Mitglied
Hallo,
mein Name ist Andreas und ich bin neu hier.
Ich bin noch komplett neu in der Welt von Android, lerne es noch im Netz.
Meine Frage ist möglicherweise ganz simpel aber ich schaffe es einfach nicht die Hintergrundfarbe meiner Button aus einer anderen Klasse zu ändern.
In der Klasse Verwaltung1 habe ich 6 Buttons die alle die Klasse Material aufrufen und dessen Buttonnamen mitgeben, nun möchte ich mit 6 weiteren Button (in der Klasse Material) dessen Hintergrundfarben dem Button in der Klasse Verwaltung1 zurückgeben.
Nach mehreren versuchen ist es mir bis dato nicht geglückt, auch mit Arrays hab ich es versucht doch leider bin ich noch nicht so weit. Frage, kann mir wer helfen?
Activity Verwaltung1
package com.example.meinproject1;

import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;




public class Verwaltung1 extends Activity implements View.OnClickListener, View.OnLongClickListener {

Button btn151, btn102, btn101, btn52, btn51, btn103, btninlager, btnma, btnuebersicht, btngas;

SharedPreferences sp1, sp2, sp3, sp4, sp5, sp6;


@override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_verwaltung1);


btn151 = findViewById(R.id.btn151);
btn102 = findViewById(R.id.btn102);
btn101 = findViewById(R.id.btn101);
btn52 = findViewById(R.id.btn52);
btn51 = findViewById(R.id.btn51);
btn103 = findViewById(R.id.btn103);
btninlager = findViewById(R.id.btninlager);
btnma = findViewById(R.id.btnma);
btnuebersicht = findViewById(R.id.btnuebersicht);
btngas = findViewById(R.id.btngas);

btn151.setOnClickListener(this);
btn102.setOnClickListener(this);
btn101.setOnClickListener(this);
btn52.setOnClickListener(this);
btn51.setOnClickListener(this);
btn103.setOnClickListener(this);
btninlager.setOnClickListener(this);
btnma.setOnClickListener(this);
btnuebersicht.setOnClickListener(this);
btngas.setOnClickListener(this);


btn151.setOnLongClickListener(new View.OnLongClickListener() {
@override
public boolean onLongClick(View v) {
Intent intent8 = new Intent(Verwaltung1.this, Material.class);
intent8.putExtra("buttonIndex", 1);
startActivityForResult(intent8,0);
return false;
}
});
btn102.setOnLongClickListener(new View.OnLongClickListener() {
@override
public boolean onLongClick(View v) {
Intent intent8 = new Intent(Verwaltung1.this, Material.class);
intent8.putExtra("buttonIndex", 2);
startActivityForResult(intent8,0);
return false;
}
});
btn101.setOnLongClickListener(new View.OnLongClickListener() {
@override
public boolean onLongClick(View v) {
Intent intent8 = new Intent(Verwaltung1.this, Material.class);
intent8.putExtra("buttonIndex", 3);
startActivityForResult(intent8,0);
return false;
}
});
btn52.setOnLongClickListener(new View.OnLongClickListener() {
@override
public boolean onLongClick(View v) {
Intent intent8 = new Intent(Verwaltung1.this, Material.class);
intent8.putExtra("buttonIndex", 4);
startActivityForResult(intent8,0);
return false;
}
});
btn51.setOnLongClickListener(new View.OnLongClickListener() {
@override
public boolean onLongClick(View v) {
Intent intent8 = new Intent(Verwaltung1.this, Material.class);
intent8.putExtra("buttonIndex", 5);
startActivityForResult(intent8,0);
return false;
}
});
btn103.setOnLongClickListener(new View.OnLongClickListener() {
@override
public boolean onLongClick(View v) {
Intent intent8 = new Intent(Verwaltung1.this, Material.class);
intent8.putExtra("buttonIndex", 6);
startActivityForResult(intent8,0);
return false;
}
});


}

@override
public void onClick(View view) {
switch (view.getId()){
case R.id.btn151:
Intent intent = new Intent(this, Schmb151.class);
startActivity(intent);
break ;

case R.id.btn102:
Intent intent1 = new Intent(this, Schmb102.class);
startActivity(intent1);
break ;

case R.id.btn101:
Intent intent2 = new Intent(this, Schmb101.class);
startActivity(intent2);
break ;

case R.id.btn52:
Intent intent3 = new Intent(this, Schmb52.class);
startActivity(intent3);
break ;

case R.id.btn51:
Intent intent4 = new Intent(this, Schmb512.class);
startActivity(intent4);
break ;

case R.id.btn103:
Intent intent5 = new Intent(this, Schmelzbericht.class);
startActivity(intent5);
break ;

case R.id.btnma:
Intent intent6 = new Intent (this, Lager.class);
startActivity(intent6);
break;

case R.id.btninlager:
Intent intent7 = new Intent (this, Innenlager.class);
startActivity(intent7);
break;

case R.id.btnuebersicht:
Intent intent8 = new Intent(this, uebersicht.class);
startActivity(intent8);
break;

case R.id.btngas:
Intent intent9 = new Intent(this, Gas.class);
startActivity(intent9);
break;

}

}

protected void onActivityResult(int BColor, int resultCode, Intent intent8) {
super.onActivityResult(BColor, resultCode, intent8);
if (BColor == 0 && resultCode == RESULT_CANCELED) {
if(BColor == 1)intent8.getIntExtra("BColor",1);
intent8.getIntExtra("BColor",2);
intent8.getIntExtra("BColor",3);
intent8.getIntExtra("BColor",4);
intent8.getIntExtra("BColor",5);
intent8.getIntExtra("BColor",6);
btn151.setBackgroundColor(BColor);
sp1.getBoolean("BCcolor",true);
btn102.setBackgroundColor(BColor);
sp2.getBoolean("BColor",true);
btn101.setBackgroundColor(BColor);
sp3.getBoolean("BColor",true);
btn52.setBackgroundColor(BColor);
sp4.getBoolean("BColor",true);
btn51.setBackgroundColor(BColor);
sp5.getBoolean("BColor",true);
btn103.setBackgroundColor(BColor);
sp6.getBoolean("BColor",true);

}
}




@override
public boolean onLongClick(View v) { return false; }

}
Activity Material
package com.example.meinproject1;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;


public class Material extends Activity implements View.OnClickListener {

TextView tVhinterlegt;

Button btnsf, btns, btnm, btntl, btnleer, btnstby, btnSpmat2;


@override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_material);


tVhinterlegt = findViewById(R.id.tVhinterlegt);

btnsf = findViewById(R.id.btnsf);
btns = findViewById(R.id.btns);
btnm = findViewById(R.id.btnm);
btntl = findViewById(R.id.btntl);
btnleer = findViewById(R.id.btnleer);
btnstby = findViewById(R.id.btnstby);
btnSpmat2 = findViewById(R.id.btnSpmat2);

btnsf.setOnClickListener(this);
btns.setOnClickListener(this);
btnm.setOnClickListener(this);
btntl.setOnClickListener(this);
btnleer.setOnClickListener(this);
btnstby.setOnClickListener(this);
btnSpmat2.setOnClickListener(this);

Intent intent = getIntent();
int buttonIndex =intent.getIntExtra("buttonIndex",getRequestedOrientation());
String pressedButtonText = "- unbekannter Knopf -";
if (buttonIndex == 1) pressedButtonText = "15T1";
if (buttonIndex == 2) pressedButtonText = "10T2";
if (buttonIndex == 3) pressedButtonText = "10T1";
if (buttonIndex == 4) pressedButtonText = "5T2";
if (buttonIndex == 5) pressedButtonText = "5T1";
if (buttonIndex == 6) pressedButtonText = "10T3";
tVhinterlegt.setText(pressedButtonText);

}


@override
public void onClick(View v) {
switch (v.getId()){
case R.id.btnsf:
Intent intent = new Intent(this,Verwaltung1.class);
intent.putExtra("BColor",0xff444444);
setResult(RESULT_OK, intent);
finish();
break ;

case R.id.btns:
intent = new Intent(this, Verwaltung1.class);
intent.putExtra("BColor",0xffa500);
setResult(RESULT_OK, intent);
finish();
break ;

case R.id.btnm:
intent = new Intent(this, Verwaltung1.class);
intent.putExtra("BColor",0xffff00ff);
setResult(RESULT_OK, intent);
finish();
break ;

case R.id.btntl:
intent = new Intent(this, Verwaltung1.class);
intent.putExtra("BColor",0xff000000);
setResult(RESULT_OK, intent);
finish();
break ;

case R.id.btnleer:
intent = new Intent(this, Verwaltung1.class);
intent.putExtra("BColor",0xffff0000);
setResult(RESULT_OK, intent);
finish();
break ;

case R.id.btnstby:
intent = new Intent(this, Verwaltung1.class);
intent.putExtra("BColor",0xff0000ff);
setResult(RESULT_OK, intent);
finish();
break ;



}
}
}
 
J

jogimuc

Stammgast
Also in der Methode hast du einige Fehler.

Code:
protected void onActivityResult(int BColor, int resultCode, Intent intent8) {
    super.onActivityResult(BColor, resultCode, intent8);
    if (BColor == 0 && resultCode == RESULT_CANCELED) {
        if(BColor == 1)intent8.getIntExtra("BColor",1);
        intent8.getIntExtra("BColor",2);
        intent8.getIntExtra("BColor",3);
        intent8.getIntExtra("BColor",4);
        intent8.getIntExtra("BColor",5);
        intent8.getIntExtra("BColor",6);
        btn151.setBackgroundColor(BColor);
        sp1.getBoolean("BCcolor",true);
        btn102.setBackgroundColor(BColor);
        sp2.getBoolean("BColor",true);
        btn101.setBackgroundColor(BColor);
        sp3.getBoolean("BColor",true);
        btn52.setBackgroundColor(BColor);
        sp4.getBoolean("BColor",true);
        btn51.setBackgroundColor(BColor);
        sp5.getBoolean("BColor",true);
        btn103.setBackgroundColor(BColor);
        sp6.getBoolean("BColor",true);

    }
}
Das BColor ist nicht die Farbe du zurück bekommst. Die steckt in dem Intent .

Auch dein fünf mal getIntExtra ist sinnlos du bekommst ja nur einen Key Wert Paar.

Weist es nicht mal einer Variablen zu kann nie gehen.

Es kommt nur ein wert an du hast auch nur ein putextra den intent übergeben. In der Zweiten Activity übergeben.

Code:
protected void onActivityResult(int BColor, int resultCode, Intent intent8) {
    super.onActivityResult(BColor, resultCode, intent8);
    if (BColor == 0 && resultCode == RESULT_CANCELED) {
        if(BColor == 1)intent8.getIntExtra("BColor",1);
        int farbe = intent8.getIntExtra("BColor",1);
        switch (farbe){
            case 0xff444444:
                btn151.setBackgroundColor(farbe);
                sp1.getBoolean("BCcolor",true);
                break;
             case ..  
             
        }
    }
}
 
A

AndyR

Neues Mitglied
protected void onActivityResult(int BColor, int resultCode, Intent intent8) {
super.onActivityResult(BColor, resultCode, intent8);
if (BColor == 0 && resultCode == RESULT_CANCELED) {
if(BColor == 1)intent8.getIntExtra("BColor",1);
int farbe = intent8.getIntExtra("BColor",1);
switch (farbe){
case 0xff444444:
btn151.setBackgroundColor(farbe);
sp1.getBoolean("BCcolor",true);
break;
case 0xffa500:
btn151.setBackgroundColor(farbe);
sp1.getBoolean("BCcolor",true);
break;
case 0xffff00ff:
btn151.setBackgroundColor(farbe);
sp1.getBoolean("BCcolor",true);
break;
case 0xff000000:
btn151.setBackgroundColor(farbe);
sp1.getBoolean("BCcolor",true);
break;
case 0xffff0000:
btn151.setBackgroundColor(farbe);
sp1.getBoolean("BCcolor",true);
break;
case 0xff0000ff:
btn151.setBackgroundColor(farbe);
sp1.getBoolean("BCcolor",true);
break;


}
}
}
Und das mit jedem Butten in dem Jeweiligen SharedPreferences wiederholen, um jeden Butten jede Farbe zuzuordnen?
-- Dieser Beitrag wurde automatisch mit dem folgenden Beitrag zusammengeführt --
if(BColor == 1)intent8.getIntExtra("BColor",1);
Condition 'BColor == 1' is always 'false' more... (Strg+F1
-- Dieser Beitrag wurde automatisch mit dem folgenden Beitrag zusammengeführt --
und für 6 Button ist dieser Code zu lange, muss wohl oder übel in eine Schleife?
 
J

jogimuc

Stammgast
Das
if(BColor == 1)intent8.getIntExtra("BColor",1);
Muss weg kann nicht geh'n.

Das habe ich in deinem ersten Code übersehen.

Erst die variable auf 0 prüfen und danach auf 1 ist sinnloss.
Macht aber auch nichts da das if niemal ausgeführt wird.
Ist nur eine Warnung vom Compiler.
-- Dieser Beitrag wurde automatisch mit dem folgenden Beitrag zusammengeführt --
Auch das RESULT_CANCELED ist sicher falsch da du ja den intent mit RESULT_OK beendest.

Somit wird das if wohl nie aufgerufen werden.
if (BColor == 0 && resultCode == RESULT_OK) {
 
A

AndyR

Neues Mitglied
jogimuc schrieb:
if (BColor == 0 && resultCode == RESULT_OK) {
so hatte ich es stehen, im Netz stand bei null geht auch CANCELED.
Bei einer Seitenanzahl von 272 geht sich der Code von6 Buttons nicht aus, und die Schleifen verstehe ich noch nicht.
 
J

jogimuc

Stammgast
Kann sein das CANCELED auch geht glaube ich weniger.
Was meinst du mit null?

Das sind zwei vergleiche die mir einer Und Operation geknüpft werden, und nur wenn BColor null ist, und dein Rsultcode gleich RESULT_OK ist wird der if teil ausgeführt. Sonst nicht.
Welcher wert in der Konstante RESULT_OK steht also welchen int wert das entspricht weiss ich nicht ist aber auch egal , denn du vergleichbar dein resultat ja mir der Konstante und nicht mit null.

Glaube du geht noch mal zu den Java Grundlagen zurück.



Was meinst du mit schleife, Seitenzahl 272 wo was soll das sein?


-- Dieser Beitrag wurde automatisch mit dem folgenden Beitrag zusammengeführt --
RESULT_CANCELED
Added in API level 1
public static final int RESULT_CANCELED

Standard activity result: operation canceled.

Constant Value: 0 (0x00000000)

----------------------


RESULT_OK
Added in API level 1
public static final int RESULT_OK

Standard activity result: operation succeeded.

Constant Value: -1 (0xffffffff)

Das ist aus der offiziellen Doku du siehst die Konstanten haben nicht den gleichen Wert. Also der Vergleich wird nicht gehen.


Getting a Result from an Activity | Android Developers


Ich glaube auch das du uns nicht den gesamten Code zeigst denn ich nirgent wo wetwas erkennen wo du deine SharedPreferences speicherst bzw dir sie erstmal holst.. Sehe keinen commit. Nur den farbwert in die vermeintliche Variablen Speichen reicht auch nicht.

Übrigen mit getBoolean speichert man nicht, sondern liest die Werte aus und zwar in eine variable.
Ist alles falsch bei dir.
 
Zuletzt bearbeitet:
A

AndyR

Neues Mitglied
Ja sagte doch bin ein blutiger Anfänger der sich das selber bei YouTube und Foren ähnlich wie diese beibringt.
Danke für den Auszug der Doku RESULT, hab ich falsch interpretiert.
272 Zeilen hat meine Klasse-Java (Android Studio) bis btn3 gibt's noch kein Problem danach wird 3 von 4 überschrieben 4 von 5 etc...Und mit Schleifen meine ich Arrays, zumindest hab ich das so gelesen.
Der Farbcode soll später in eine eigene Datenbank gespeichert werden um mit mehreren Geräten darauf arbeiten zu können,
momentan möchte ich nur sehen ob es funktioniert.
Mit .getBoolean dachte ich nur da der onLongClick ein @override
public boolean onLongClick(View v) { return false; }
es mit true zu bestätigen.
 
J

jogimuc

Stammgast
Mit .getBoolean dachte ich nur da der onLongClick ein @override
public boolean onLongClick(View v) { return false; }
Um das Thema ging es ja gar nicht. Da hast du die sinnlose abfrage gar nicht drin.

Es ging ja um die

void onActivityResult(int BColor, int resultCode, Intent intent8)

und die hat keinen Rückgabe Wert ist Void.


„sp1.getBoolean("BCcolor",true);“ Du fragst eine Pref ab und weiter ? Den zurückgegeben Boolean benutzt du gar nicht. macht absolut keinen sinn.


Auch sowas wie den Aufbau der Pref sehe ich in deinen Code nicht.

Das mit den SheredPreferences scheinst du noch nicht verstanden zuhaben.
 
J

jogimuc

Stammgast
bis btn3 gibt's noch kein Problem danach wird 3 von 4 überschrieben 4 von 5 etc...Und mit Schleifen meine ich Arrays, zumindest hab ich das so gelesen.
Was genau meinst du damit?
Wo in deinem Code ist ein Array?
In den von dir veröffentlichten Code gibt es kein array.
Ein array ist sowas hier
int[] testarray = { 2,3,6,1,7 };
 
A

AndyR

Neues Mitglied
AndyR schrieb:
272 Zeilen hat meine Klasse-Java (Android Studio) bis btn3 gibt's noch kein Problem danach wird 3 von 4 überschrieben 4 von 5 etc...Und mit Schleifen meine ich Arrays, zumindest hab ich das so gelesen.
Deswegen muss ich ein Array Anlegen.
 
J

jogimuc

Stammgast
Also mit deinen Post kann ich nichts anfangen. Wenn du keine Hilfe willst bitte sehr.

Kalsse, Array glaube dir ist der Unterscheid nicht klar.
 
A

AndyR

Neues Mitglied
Ich denke die Seite ist zu kurz deswegen werde ich den Code einkürzen müssen
Das ist meine Annahme weil sich der Code überschreibt = kann das den sein oder mache ich hier einen weiteren Fehler???
 
J

jogimuc

Stammgast
Dann zeige uns noch mal den Code der daran schuld sein soll. Aber dieses mal bitte in dem dafür vorgesehenen Code Block unter dem Plus Symbol. Damit man ihn auch vernünftig lese kann.

code bitte so wie er jetzt ist