App- Hintergrund ändern und dann speichern

R

runner98

Neues Mitglied
0
Hallo!
Ich habe ein kleines Problem. Ich bin noch neu im Android-Programmieren und habe erst im März damit angefangen, also bitte keine Kommentare zu dem sicherlich etwas holprigen Code und zu meinem Problem:biggrin:. Ich schreibe eine App, bei der man unter anderem den Hintergrund ändern kann, wenn man auf einen Button drückt. Das funktioniert so weit ganz gut, allerdings speichert er diesen Hintergrund nicht ab, also wenn ich die App neu starte, zeigt er wieder den alten Hintergrund an und nicht den neuen, ausgewählten. Hat jemand eine Idee, wie man den neuen Hintergrund abspeichern kann? Und das zweite: es gibt noch ein zweites Layout, bei dem ich gerne diesen Hintergrund ebenfalls übernehmen will. Lässt sich der ausgewählte Hintergrund zwischen Layout 1 und Layout 2 "transferieren" (ein besserer Ausdruck fällt mir nicht ein:smile:)? Bin für sämtliche Hilfe etc. dankbar!

Hier der Quellcode:
public class Homeedit extends Activity
{

public RelativeLayout background;
public Button ok;
public Button polardesignbutton;
public Button reddesignbutton;
public Button cdesignbutton;
public Button bluedesignbutton;
public Button yellowdesignbutton;
public Button bestätigen;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.homeedit);
getActionBar().hide();


background=(RelativeLayout) findViewById(R.id.background);
polardesignbutton=(Button) findViewById(R.id.polardesignbutton);
polardesignbutton.setOnClickListener(new OnClickListener(){
public void onClick(View v){
background.setBackground(getResources().getDrawable(R.drawable.ic_polar));
bestätigen.setVisibility(View.VISIBLE);
}
});
ok=(Button) findViewById(R.id.ok);
ok.setOnClickListener(new OnClickListener(){
public void onClick(View v){


background.setBackground(getResources().getDrawable(R.drawable.ic_turk));
bestätigen.setVisibility(View.VISIBLE);



}
});

reddesignbutton=(Button) findViewById(R.id.reddesignbutton);
reddesignbutton.setOnClickListener(new OnClickListener(){
public void onClick(View v){

background.setBackground(getResources().getDrawable(R.drawable.ic_red));
bestätigen.setVisibility(View.VISIBLE);

}
});
cdesignbutton=(Button) findViewById(R.id.cdesignbutton);
cdesignbutton.setOnClickListener(new OnClickListener(){
public void onClick(View v){

background.setBackground(getResources().getDrawable(R.drawable.ic_start));
bestätigen.setVisibility(View.VISIBLE);


}
});
bluedesignbutton=(Button) findViewById(R.id.bluedesignbutton);
bluedesignbutton.setOnClickListener(new OnClickListener(){
public void onClick(View v){

background.setBackground(getResources().getDrawable(R.drawable.ic_blue));
bestätigen.setVisibility(View.VISIBLE);


}
});
yellowdesignbutton=(Button) findViewById(R.id.yellowdesignbutton);
yellowdesignbutton.setOnClickListener(new OnClickListener(){
public void onClick(View v){

background.setBackground(getResources().getDrawable(R.drawable.ic_yellow));
bestätigen.setVisibility(View.VISIBLE);


}
});
bestätigen=(Button) findViewById(R.id.bestätigen);
bestätigen.setVisibility(View.GONE);
bestätigen.setOnClickListener(new OnClickListener(){
public void onClick(View v){
polardesignbutton.setVisibility(View.GONE);
ok.setVisibility(View.GONE);
reddesignbutton.setVisibility(View.GONE);
cdesignbutton.setVisibility(View.GONE);
bluedesignbutton.setVisibility(View.GONE);
yellowdesignbutton.setVisibility(View.GONE);
bestätigen.setVisibility(View.GONE);
}
});
}


}
 
du musst deinen hintergrund in den sharedpreferences speichern und beim nächsten start laden und wieder setzen.

die app kann das nicht einfach so wissen.
 
Ok danke, das probier ich mal. Aber wie gesagt, ich bin noch ganz neu beim entwickeln und weiß nicht so ganz was du meinst... Ich google das mal:smile:

Der ursprüngliche Beitrag von 20:23 Uhr wurde um 20:31 Uhr ergänzt:

Ok Sorry ich bin zu doof:sad:. Wie geht das?
 
ja ich werde dir hier keinen code rein posten.

nach sharedprefereces googlen, dann findest schonmal vieles was dir hilft. da könntest dann in den preferences speichern was der user für einen hintergrund ausgewählt hat.

beim starten in der onresume lädst du das und setzt den passenden hintergrund.
 
Noch eine Anmerkung zu deinen Code. Du benutzt bei der Benennung deiner Variablen Sonderzeichen (ä,ü,ö,ß). Das kann immer zu Problemen führen. Große Teile von Android kommen von der anderen Seite des großen Teiches. Englische Programmierer rechnen einfach nicht damit.

Wenn du es bis jetzt noch nicht gefunden hast:

Storage Options | Android Developers

Und ich hätte noch eine Frage zum Code. Reine Neugier.
Warum sind die ganzen Button public?
 
Danke erstmal!
Auf deine Frage: Gute Frage, Nächste Frage!:biggrin: Ich weiß es selber nicht, wie gesagt, ich bin noch neu und hab mir auch die Sache mit den Buttons aus Tutorials angeeignet... Keine Ahnung, wo das war, aber die Website von der ich das habe, hat das auch so gehabt. Was würde sich denn ändern, wenn ich nicht "public" schreibe?
 
Du speicherst einfach einen Bool ab.

Wenn du den Hintergrund setzt, setzt du den Bool auf "true".

Den speicherst du nach dem setzen so ab:

Code:
SharedPreferences pref = getSharedPreferences("background", false);
        SharedPreferences.Editor editor = pref.edit();
        editor.putInt("bool", true);
        editor.commit();

Wenn du die app dan startest, fragst du ihn dann im onCreate so ab:

Code:
 SharedPreferences pref = getSharedPreferences("background", false);
        return pref.getInt("bool", false);
 
Statt in der Methode onCreate() packe den Code in onResume().

Eine App wird nicht unbedingt beendet, wenn sie nicht mehr sichtbar ist. Wenn die App nur im "background" war, wird beim Neustart onCreate() nicht aufgerufen. onResume() wird auch ausgeführt, wenn die App aus dem "background" kommt.
Activity | Android Developers


public ist ein Modifikator. Das Konzept dahinter ist einer der Eckpfeiler von Java. Du sollst am besten dich damit vertraut machen, bevor du weiter machst. Galileo Computing :: Java ist auch eine Insel - 5 Eigene Klassen schreiben
 
Ja, oder onResume, ja nach dem.
 
hmm ein bool speichern ist nicht gerade gut gelöst, wenn er unterschiedliche hintergründe wählen kann.

würde speichern, welcher hintergrund gewählt wurde. und den dann beim starten wieder setzen.
 
Verschiedene? Hoppala, sollte beim nächsten mal lieber den Startpost besser lesen.

Dachte es geht nur darum zu wissen, ob überhaupt einer abgespeichert war.

Na dann soll er dasselbe einfach mit festgelegten integer Werten oder Strings machen.
 

Ähnliche Themen

Laser5001
Antworten
3
Aufrufe
646
swa00
swa00
Manny87
  • Manny87
Antworten
11
Aufrufe
159
swa00
swa00
B
Antworten
6
Aufrufe
1.048
jogimuc
J
Zurück
Oben Unten