Hi,
ich bin beim Programmieren mit Java noch sehr unerfahren. Ich versuche ein Spiel für Android zu programmieren. Dabei sollen Variablen gespeichert werden, um nach einem erneuten Starten der App nicht von vorne anfangen zu müssen. Jedoch schließt sich die App("App wurde leider beendet"). Mit dem Debugger komm folgender Fehler:
Ich hoffe ihr könnt mir helfen.
Kompletter Soure code:
(1. class)
(2. class)
Dieses Game ist noch am Anfang. Dadurch könnten einige Befehle sinnlos wirken.
ich bin beim Programmieren mit Java noch sehr unerfahren. Ich versuche ein Spiel für Android zu programmieren. Dabei sollen Variablen gespeichert werden, um nach einem erneuten Starten der App nicht von vorne anfangen zu müssen. Jedoch schließt sich die App("App wurde leider beendet"). Mit dem Debugger komm folgender Fehler:
Ich überlege nun seit Stunden und finde die Ursache nicht...E/AndroidRuntime: FATAL EXCEPTION: main
Process: ihack.battl.de.ihack, PID: 12863
java.lang.NullPointerException: Attempt to invoke interface method 'android.content.SharedPreferences$Editor android.content.SharedPreferences$Editor.putInt(java.lang.String, int)' on a null object reference
at ihack.battl.de.ihack.Start.speichern(Start.java:141)
at ihack.battl.de.ihack.game.onClick(game.java:85)
at android.view.View.performClick(View.java:5280)
at android.view.View$PerformClick.run(View.java:21239)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:234)
at android.app.ActivityThread.main(ActivityThread.java:5526)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Ich hoffe ihr könnt mir helfen.
Kompletter Soure code:
(1. class)
Java:
package ihack.battl.de.ihack;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.view.View.OnClickListener;
import android.widget.Toast;
public class Start extends AppCompatActivity implements OnClickListener {
Button boption1,boption2,hilfe;
static SharedPreferences speicher;
static Editor editor;
static int savewert=0;
static int test;
static float bitstart,syslvl,kdollar,dollarmulti,score,bitcoin,przwert,grakawert;
static float prz,twertgegner,twertspieler,adwertspieler,swertspieler,x,option1z,option2,option2_1,option3,option4,swertgegner1,twertgegner1,adwertgegner1,gdollar1,score1,escore1,swertgegner2,twertgegner2,adwertgegner2,gdollar2,score2,escore2,swertgegner3,twertgegner3,adwertgegner3,gdollar3,score3,escore3;
static int przmulti,agswwert,prgswwert;
static int preis1,preis2,preis3,preis4;
static long psccode,altpsccode;
static float angpsccode;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_start);
boption1= (Button)findViewById(R.id.bNeuesSpiel);
boption2= (Button)findViewById(R.id.bSpielLaden);
hilfe = (Button)findViewById(R.id.bHilfe);
boption1.setOnClickListener(this);
boption2.setOnClickListener(this);
hilfe.setOnClickListener(this);
speicher = getApplicationContext().getSharedPreferences("Wert",0);
if(1 == savewert){
editor.putInt("Data1",preis1);
editor.commit();
editor.putInt("Data2",preis2);
editor.commit();
editor.putInt("Data3",preis3);
editor.commit();
editor.putInt("Data4",preis4);
editor.commit();
editor.putFloat("Data5",x);
editor.commit();
editor.putFloat("Data6",bitstart);
editor.commit();
editor.putFloat("Data7",syslvl);
editor.commit();
editor.putFloat("Data8",kdollar);
editor.commit();
editor.putFloat("Data9",dollarmulti);
editor.commit();
editor.putFloat("Data10",score);
editor.commit();
editor.putFloat("Data11",bitcoin);
editor.commit();
editor.putFloat("Data12",przwert);
editor.commit();
editor.putFloat("Data13",grakawert);
editor.commit();
editor.putInt("Data14",przmulti);
editor.commit();
editor.putInt("Data15",agswwert);
editor.commit();
editor.putInt("Data16",prgswwert);
editor.commit();
editor.putLong("Data17",psccode);
editor.commit();
editor.putLong("Data18",altpsccode);
editor.commit();
editor.putInt("TestData",test);
editor.commit();
Toast.makeText(this, "Spielstand gespeichert",Toast.LENGTH_LONG).show();
}
}
public void onClick(View e){
int eingabe = e.getId();
if(eingabe==R.id.bNeuesSpiel){
test= 1;
preis1=2;
preis2=3;
preis3=1;
preis4=1;
przwert= (float) 0.1;
przmulti=1;
agswwert=1;
prgswwert=1;
grakawert=150;
dollarmulti=1;
x=1;
syslvl=1;
kdollar=100;
score=0;
bitstart=0;
bitcoin=0;
psccode=0;
altpsccode=0;
Intent intent = new Intent(Start.this, game.class);
startActivity(intent);
}
if(eingabe==R.id.bSpielLaden) {
if(speicher.getInt("TestData",0)!=0){
speicher.getInt("Data1",preis1);
speicher.getInt("Data2",preis2);
speicher.getInt("Data3",preis3);
speicher.getInt("Data4",preis4);
speicher.getFloat("Data5",x);
speicher.getFloat("Data6",bitstart);
speicher.getFloat("Data7",syslvl);
speicher.getFloat("Data8",kdollar);
speicher.getFloat("Data9",dollarmulti);
speicher.getFloat("Data10",score);
speicher.getFloat("Data11",bitcoin);
speicher.getFloat("Data12",przwert);
speicher.getFloat("Data13",grakawert);
speicher.getInt("Data14",przmulti);
speicher.getInt("Data15",agswwert);
speicher.getInt("Data16",prgswwert);
speicher.getLong("Data17",psccode);
speicher.getLong("Data18",altpsccode);
Intent intent = new Intent(Start.this, game.class);
startActivity(intent);
}else{
Toast.makeText(this, "Kein Spielstand vorhanden",Toast.LENGTH_LONG).show();
}
}
}
public static void speichern(){
editor.putInt("Data1",preis1);
editor.putInt("Data2",preis2);
editor.putInt("Data3",preis3);
editor.putInt("Data4",preis4);
editor.putFloat("Data5",x);
editor.putFloat("Data6",bitstart);
editor.putFloat("Data7",syslvl);
editor.putFloat("Data8",kdollar);
editor.putFloat("Data9",dollarmulti);
editor.putFloat("Data10",score);
editor.putFloat("Data11",bitcoin);
editor.putFloat("Data12",przwert);
editor.putFloat("Data13",grakawert);
editor.putInt("Data14",przmulti);
editor.putInt("Data15",agswwert);
editor.putInt("Data16",prgswwert);
editor.putLong("Data17",psccode);
editor.putLong("Data18",altpsccode);
editor.putInt("TestData",test);
}
Java:
package ihack.battl.de.ihack;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import android.view.View.OnClickListener;
import static ihack.battl.de.ihack.Start.adwertspieler;
import static ihack.battl.de.ihack.Start.agswwert;
import static ihack.battl.de.ihack.Start.altpsccode;
import static ihack.battl.de.ihack.Start.bitcoin;
import static ihack.battl.de.ihack.Start.bitstart;
import static ihack.battl.de.ihack.Start.dollarmulti;
import static ihack.battl.de.ihack.Start.grakawert;
import static ihack.battl.de.ihack.Start.kdollar;
import static ihack.battl.de.ihack.Start.preis1;
import static ihack.battl.de.ihack.Start.preis2;
import static ihack.battl.de.ihack.Start.preis3;
import static ihack.battl.de.ihack.Start.preis4;
import static ihack.battl.de.ihack.Start.prgswwert;
import static ihack.battl.de.ihack.Start.prz;
import static ihack.battl.de.ihack.Start.przmulti;
import static ihack.battl.de.ihack.Start.przwert;
import static ihack.battl.de.ihack.Start.psccode;
import static ihack.battl.de.ihack.Start.score;
import static ihack.battl.de.ihack.Start.speichern;
import static ihack.battl.de.ihack.Start.swertspieler;
import static ihack.battl.de.ihack.Start.syslvl;
import static ihack.battl.de.ihack.Start.test;
import static ihack.battl.de.ihack.Start.twertspieler;
import static ihack.battl.de.ihack.Start.x;
import ihack.battl.de.ihack.Start;
public class game extends AppCompatActivity implements OnClickListener {
Button b,bs;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
var();
setContentView(R.layout.activity_game_menue);
TextView textView = (TextView) findViewById(R.id.werte);
textView.setText("Systemlevel: " + syslvl + "\nScanwert: " + swertspieler + "\nTrojanawert: " + twertspieler + "\nAdwarewert: " + adwertspieler + "\n" + kdollar + "Dollar im Besitz");
b= (Button)findViewById(R.id.b);
bs=(Button)findViewById(R.id.save);
b.setOnClickListener(this);
bs.setOnClickListener(this);
}
public void var(){
kdollar= (float) (Math.round(100.0 * kdollar) / 100.0);
if (bitstart==1)
{
bitcoin+=grakawert/100000;
} // end of if bitminer
prz=przwert*przmulti;
swertspieler=agswwert+100+(syslvl*(prz/5));
twertspieler=prgswwert+100+(syslvl*(prz/5));
adwertspieler=prgswwert+100+(syslvl*(prz/5));
syslvl= (swertspieler+twertspieler+adwertspieler)/3/100;
syslvl = (float) (Math.round(syslvl*1)/1.0);
}
@Override
public void onClick(View v) {
int eingabe = v.getId();
if(eingabe==R.id.b) {
kdollar += 100;
Intent intent = new Intent(game.this, game.class);
startActivity(intent);
}
if(eingabe==R.id.save){
speichern();
Intent intent = new Intent(game.this, Start.class);
startActivity(intent);
}
}
}