0

So I'm pretty sure I know what my problem is but I have no idea how to fix it or work around it... I'm making this game for a class and right now I'm trying to save the state of the app when a user clicks the back button or exits the app. But when I click the back button everything is reset to when you first start..?

Here's my Class:

public class PlayScreen extends Activity {

Spinner spinnerMonsters;
Button btnBattle;
TextView textViewBattleResults;
TextView textViewLevelGained;
TextView textViewXPValue;
TextView textViewXpNextLevel;
TextView textViewLevelValue;
TextView textViewGoldValue;
TextView textview5;
TextView textViewStrRace;
TextView textViewStrClass;
TextView textViewStrAlliance;

private int xp = 0;
private int level = 1;
private int gold = 0;
private int hp = 10;
private int mp = 10;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.play_screen);

    TextView textview5 = (TextView) findViewById(R.id.textView5);
    TextView textViewStrRace = (TextView) findViewById(R.id.textViewStrRace);
    TextView textViewStrClass = (TextView) findViewById(R.id.TextViewStrClass);
    TextView textViewStrAlliance = (TextView) findViewById(R.id.textViewStrAlliance);

    String Name = getIntent().getStringExtra("strName");
    textview5.setText(Name);
    textview5.setTextColor(Color.CYAN);

    String Race = getIntent().getStringExtra("strRace");
    textViewStrRace.setText(Race);

    String Class = getIntent().getStringExtra("strClass");
    textViewStrClass.setText(Class);

    String Alliance = getIntent().getStringExtra("strAlliance");
    textViewStrAlliance.setText(Alliance);

    Button btnInventory = (Button) findViewById(R.id.button1);
    btnInventory.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

            Intent intent = new Intent(v.getContext(), Inventory.class);
            startActivityForResult(intent, 0);

        }
    });

    Button btnEquipment = (Button) findViewById(R.id.button2);
    btnEquipment.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

            Intent intent = new Intent(v.getContext(), Equipment.class);
            startActivityForResult(intent, 0);

        }
    });

    Button btnStats = (Button) findViewById(R.id.button3);
    btnStats.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

            Intent intent = new Intent(v.getContext(), Statistics.class);
            startActivityForResult(intent, 0);

        }
    });

    Button btnShop = (Button) findViewById(R.id.Button01);
    btnShop.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

            Intent intent = new Intent(v.getContext(), Shop.class);
            startActivityForResult(intent, 0);

        }
    });

    Button btnCrafting = (Button) findViewById(R.id.button4);
    btnCrafting.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

            Intent intent = new Intent(v.getContext(), Crafting.class);
            startActivityForResult(intent, 0);

        }
    });

    Button btnClassTraining = (Button) findViewById(R.id.button5);
    btnClassTraining.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

            Intent intent = new Intent(v.getContext(), ClassTraining.class);
            startActivityForResult(intent, 0);

        }
    });

    Button btnBattle = (Button) findViewById(R.id.btnBattle);
    btnBattle.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method
            // -----------------------------------------------------------------------------------------------------------------------------
            Spinner spinnerMonsters = (Spinner) findViewById(R.id.spinnerMonsters);
            final Button btnBattle = (Button) findViewById(R.id.btnBattle);
            final TextView textViewBattleResults = (TextView) findViewById(R.id.textViewBattleResults);
            TextView textViewXPValue = (TextView) findViewById(R.id.textViewXPValue);
            TextView textViewXpNextLevel = (TextView) findViewById(R.id.textViewXpNextLevel);
            final TextView textViewLevelGained = (TextView) findViewById(R.id.textViewLevelGained);
            TextView textViewLevelValue = (TextView) findViewById(R.id.textViewLevelValue);
            TextView textViewGoldValue = (TextView) findViewById(R.id.textViewGoldValue);
            final TextView textViewXPResults = (TextView) findViewById(R.id.textViewXPResults);
            final TextView textViewGoldResults = (TextView) findViewById(R.id.textViewGoldResults);
            final TextView textViewLootResults = (TextView) findViewById(R.id.textViewLootResults);
            TextView textViewHP = (TextView) findViewById(R.id.textViewHP);
            TextView textViewMP = (TextView) findViewById(R.id.textViewMP);
            final TextView textViewTimer = (TextView) findViewById(R.id.textView10);
            int XP = Integer.parseInt(textViewXPValue.getText().toString());
            int XPNEXT = Integer.parseInt(textViewXpNextLevel.getText()
                    .toString());
            // -----------------------------------------------------------------------------------------------------------------------------

            // ---------------------
            // XPValue <= XPLimit |
            // ---------------------

            if (textViewXPValue.getText().toString()
                    .equals(textViewXpNextLevel.getText().toString())) {
                int newLimit = Integer.parseInt(textViewXpNextLevel
                        .getText().toString()) + 100;
                textViewXpNextLevel.setText(newLimit + "");
                textViewLevelValue.setText(String.valueOf(level));
                textViewHP.setText(String.valueOf(hp));
                textViewMP.setText(String.valueOf(mp));
                textViewLevelGained.setVisibility(View.VISIBLE);
                textViewLevelGained.setText("You have gained a level!");
                xp = 0;
                level = level + 1;
                hp = hp + 10;
                mp = mp + 10;
            } else if (XP >= XPNEXT) {
                int newLimit = Integer.parseInt(textViewXpNextLevel
                        .getText().toString()) + 100;
                textViewXpNextLevel.setText(newLimit + "");
                textViewLevelValue.setText(String.valueOf(level));
                textViewHP.setText(String.valueOf(hp));
                textViewMP.setText(String.valueOf(mp));
                textViewLevelGained.setVisibility(View.VISIBLE);
                textViewLevelGained.setText("You have gained a level!");
                xp = 0;
                level = level + 1;
                hp = hp + 10;
                mp = mp + 10;
            }

            if (level == 51) {
                textViewXPValue.setText(textViewXpNextLevel.getText()
                        .toString());
                textViewBattleResults.setText("Thanks for playing!");
                level = level + 0;
                hp = hp + 0;
                mp = mp + 0;
                xp = xp + 0;
            }

            // -----------------------------------------------------------------------------------------------------------------------------

            // ----------------------------
            // Count Down Timer Activity |
            // ----------------------------

            new CountDownTimer(1000, 1000) {

                public void onTick(long millisUntilFinished) {
                    textViewTimer.setText("" + millisUntilFinished / 1000);
                    textViewXPResults.setVisibility(View.VISIBLE);
                    textViewGoldResults.setVisibility(View.VISIBLE);
                    textViewLootResults.setVisibility(View.VISIBLE);
                }

                public void onFinish() {
                    textViewTimer.setVisibility(View.INVISIBLE);
                    textViewBattleResults.setVisibility(View.INVISIBLE);
                    textViewXPResults.setText("XP: ");
                    textViewGoldResults.setText("Gold: ");
                    textViewLootResults.setText("Loot: ");
                    btnBattle.setVisibility(View.VISIBLE);
                    textViewLevelGained.setVisibility(View.INVISIBLE);

                }
            }.start();

            textViewTimer.setVisibility(View.VISIBLE);
            btnBattle.setVisibility(View.INVISIBLE);

            // -----------------------------------------------------------------------------------------------------------------------------

            // --------------------
            // Monster sequences |
            // --------------------

            // Training Dummy
            if (spinnerMonsters.getSelectedItem().toString()
                    .equals("(0) Training Dummy")) {
                textViewBattleResults.setVisibility(View.VISIBLE);
                if (level == 51) {
                    xp = xp + 0;
                } else {
                    textViewBattleResults
                            .setText("You have killed Training Dummy!");
                    xp = xp + 100;
                    textViewXPValue.setText(String.valueOf(xp));
                    textViewXPResults.setText("XP: +10");
                    textViewGoldResults.setText("Gold: 0");
                    textViewLootResults.setText("Loot: none");
                }
            }// Cockroach
            else if (spinnerMonsters.getSelectedItem().toString()
                    .equals("(2) Cockroach")) {
                textViewBattleResults.setVisibility(View.VISIBLE);
                if (level == 51) {
                    xp = xp + 0;
                } else if (level >= 2) {
                    textViewBattleResults
                            .setText("You have killed a Cockroach!");
                    xp = xp + 27;
                    gold = gold + 3;
                    textViewXPValue.setText(String.valueOf(xp));
                    textViewGoldValue.setText(String.valueOf(gold));
                    textViewXPResults.setText("XP: +27");
                    textViewGoldResults.setText("Gold: +3");
                    textViewLootResults.setText("Loot: none");

                } else {
                    textViewBattleResults
                            .setText("You have been defeated by a Cockroach!");
                    xp = xp + 0;
                    gold = gold + 0;
                    textViewXPValue.setText(String.valueOf(xp));
                    textViewGoldValue.setText(String.valueOf(gold));
                    textViewXPResults.setText("XP: 0");
                    textViewGoldResults.setText("Gold: 0");
                    textViewLootResults.setText("Loot: none");
                }
            }// Diseased Rat
            else if (spinnerMonsters.getSelectedItem().toString()
                    .equals("(3) Diseased Rat")) {
                textViewBattleResults.setVisibility(View.VISIBLE);
                if (level == 51) {
                    xp = xp + 0;
                }
                if (level >= 3) {
                    textViewBattleResults
                            .setText("You have killed a Diseased Rat!");
                    xp = xp + 36;
                    gold = gold + 5;
                    textViewXPValue.setText(String.valueOf(xp));
                    textViewGoldValue.setText(String.valueOf(gold));
                    textViewXPResults.setText("XP: +36");
                    textViewGoldResults.setText("Gold: +5");
                    textViewLootResults.setText("Loot: none");
                } else {
                    textViewBattleResults
                            .setText("You have been defeated by a Diseased Rat!");
                    xp = xp + 0;
                    gold = gold + 0;
                    textViewXPValue.setText(String.valueOf(xp));
                    textViewGoldValue.setText(String.valueOf(gold));
                    textViewXPResults.setText("XP: 0");
                    textViewGoldResults.setText("Gold: 0");
                    textViewLootResults.setText("Loot: none");
                }
            }// Black Widdow
            else if (spinnerMonsters.getSelectedItem().toString()
                    .equals("(5) Black Widdow")) {
                textViewBattleResults.setVisibility(View.VISIBLE);
                if (level == 51) {
                    xp = xp + 0;
                }
                if (level >= 5) {
                    textViewBattleResults
                            .setText("You have killed a Black Widdow!");
                    xp = xp + 45;
                    gold = gold + 7;
                    textViewXPValue.setText(String.valueOf(xp));
                    textViewGoldValue.setText(String.valueOf(gold));
                    textViewXPResults.setText("XP: +45");
                    textViewGoldResults.setText("Gold: +7");
                    textViewLootResults.setText("Loot: none");
                } else {
                    textViewBattleResults
                            .setText("You have been defeated by a Black Widdow!");
                    xp = xp + 0;
                    gold = gold + 0;
                    textViewXPValue.setText(String.valueOf(xp));
                    textViewGoldValue.setText(String.valueOf(gold));
                    textViewXPResults.setText("XP: 0");
                    textViewGoldResults.setText("Gold: 0");
                    textViewLootResults.setText("Loot: none");
                }
            }// Goblin
            else if (spinnerMonsters.getSelectedItem().toString()
                    .equals("(7) Goblin")) {
                textViewBattleResults.setVisibility(View.VISIBLE);
                if (level == 51) {
                    xp = xp + 0;
                }
                if (level >= 7) {
                    textViewBattleResults
                            .setText("You have killed a Goblin!");
                    xp = xp + 51;
                    gold = gold + 11;
                    textViewXPValue.setText(String.valueOf(xp));
                    textViewGoldValue.setText(String.valueOf(gold));
                    textViewXPResults.setText("XP: +51");
                    textViewGoldResults.setText("Gold: +11");
                    textViewLootResults.setText("Loot: none");
                } else {
                    textViewBattleResults
                            .setText("You have been defeated by a Goblin!");
                    xp = xp + 0;
                    gold = gold + 0;
                    textViewXPValue.setText(String.valueOf(xp));
                    textViewGoldValue.setText(String.valueOf(gold));
                    textViewXPResults.setText("XP: 0");
                    textViewGoldResults.setText("Gold: 0");
                    textViewLootResults.setText("Loot: none");
                }
            }// Undead Troll
            else if (spinnerMonsters.getSelectedItem().toString()
                    .equals("(9) Undead Troll")) {
                textViewBattleResults.setVisibility(View.VISIBLE);
                if (level == 51) {
                    xp = xp + 0;
                }
                if (level >= 9) {
                    textViewBattleResults
                            .setText("You have killed an Undead Troll!");
                    xp = xp + 63;
                    gold = gold + 19;
                    textViewXPValue.setText(String.valueOf(xp));
                    textViewGoldValue.setText(String.valueOf(gold));
                    textViewXPResults.setText("XP: +63");
                    textViewGoldResults.setText("Gold: +19");
                    textViewLootResults.setText("Loot: none");
                } else {
                    textViewBattleResults
                            .setText("You have been defeated by an Undead Troll!");
                    xp = xp + 0;
                    gold = gold + 0;
                    textViewXPValue.setText(String.valueOf(xp));
                    textViewGoldValue.setText(String.valueOf(gold));
                    textViewXPResults.setText("XP: 0");
                    textViewGoldResults.setText("Gold: 0");
                    textViewLootResults.setText("Loot: none");
                }
            }// Giant
            else if (spinnerMonsters.getSelectedItem().toString()
                    .equals("(13) Giant")) {
                textViewBattleResults.setVisibility(View.VISIBLE);
                if (level == 51) {
                    xp = xp + 0;
                }
                if (level > 13) {
                    textViewBattleResults
                            .setText("You have killed a Giant!");
                    xp = xp + 72;
                    gold = gold + 28;
                    textViewXPValue.setText(String.valueOf(xp));
                    textViewGoldValue.setText(String.valueOf(gold));
                    textViewXPResults.setText("XP: +72");
                    textViewGoldResults.setText("Gold: +28");
                    textViewLootResults.setText("Loot: none");
                } else {
                    textViewBattleResults
                            .setText("You have defeated killed by a Giant!");
                    xp = xp + 0;
                    gold = gold + 0;
                    textViewXPValue.setText(String.valueOf(xp));
                    textViewGoldValue.setText(String.valueOf(gold));
                    textViewXPResults.setText("XP: 0");
                    textViewGoldResults.setText("Gold: 0");
                    textViewLootResults.setText("Loot: none");
                }
            }// Young Blue Drake
            else if (spinnerMonsters.getSelectedItem().toString()
                    .equals("(17) Young Blue Drake")) {
                textViewBattleResults.setVisibility(View.VISIBLE);
                if (level == 51) {
                    xp = xp + 0;
                }
                if (level > 17) {
                    textViewBattleResults
                            .setText("You have killed a Young Blue Drake!");
                    xp = xp + 88;
                    gold = gold + 42;
                    textViewXPValue.setText(String.valueOf(xp));
                    textViewGoldValue.setText(String.valueOf(gold));
                    textViewXPResults.setText("XP: +88");
                    textViewGoldResults.setText("Gold: +42");
                    textViewLootResults.setText("Loot: none");
                } else {
                    textViewBattleResults
                            .setText("You have been defeated by a Young Blue Drake!");
                    xp = xp + 0;
                    gold = gold + 0;
                    textViewXPValue.setText(String.valueOf(xp));
                    textViewGoldValue.setText(String.valueOf(gold));
                    textViewXPResults.setText("XP: 0");
                    textViewGoldResults.setText("Gold: 0");
                    textViewLootResults.setText("Loot: none");
                }
            }// Hobgoblin
            else if (spinnerMonsters.getSelectedItem().toString()
                    .equals("(21) Hobgoblin")) {
                textViewBattleResults.setVisibility(View.VISIBLE);
                if (level == 51) {
                    xp = xp + 0;
                }
                if (level > 21) {
                    textViewBattleResults
                            .setText("You have killed a Hobgoblin!");
                    xp = xp + 94;
                    gold = gold + 51;
                    textViewXPValue.setText(String.valueOf(xp));
                    textViewGoldValue.setText(String.valueOf(gold));
                    textViewXPResults.setText("XP: +94");
                    textViewGoldResults.setText("Gold: +51");
                    textViewLootResults.setText("Loot: none");
                } else {
                    textViewBattleResults
                            .setText("You have been defeated by a Hobgoblin!");
                    xp = xp + 0;
                    gold = gold + 0;
                    textViewXPValue.setText(String.valueOf(xp));
                    textViewGoldValue.setText(String.valueOf(gold));
                    textViewXPResults.setText("XP: 0");
                    textViewGoldResults.setText("Gold: 0");
                    textViewLootResults.setText("Loot: none");
                }
            }// Skeletion
            else if (spinnerMonsters.getSelectedItem().toString()
                    .equals("(23) Skeleton")) {
                textViewBattleResults.setVisibility(View.VISIBLE);
                if (level == 51) {
                    xp = xp + 0;
                }
                if (level > 23) {
                    textViewBattleResults
                            .setText("You have killed a Skeleton!");
                    xp = xp + 101;
                    gold = gold + 60;
                    textViewXPValue.setText(String.valueOf(xp));
                    textViewGoldValue.setText(String.valueOf(gold));
                    textViewXPResults.setText("XP: +101");
                    textViewGoldResults.setText("Gold: +60");
                    textViewLootResults.setText("Loot: none");
                } else {
                    textViewBattleResults
                            .setText("You have been defeated by a Skeleton!");
                    xp = xp + 0;
                    gold = gold + 0;
                    textViewXPValue.setText(String.valueOf(xp));
                    textViewGoldValue.setText(String.valueOf(gold));
                    textViewXPResults.setText("XP: 0");
                    textViewGoldResults.setText("Gold: 0");
                    textViewLootResults.setText("Loot: none");
                }
            }// Thief Master
            else if (spinnerMonsters.getSelectedItem().toString()
                    .equals("(26) Thief Master")) {
                textViewBattleResults.setVisibility(View.VISIBLE);
                if (level == 51) {
                    xp = xp + 0;
                }
                if (level > 26) {
                    textViewBattleResults
                            .setText("You have killed a Thief Master!");
                    xp = xp + 117;
                    gold = gold + 74;
                    textViewXPValue.setText(String.valueOf(xp));
                    textViewGoldValue.setText(String.valueOf(gold));
                    textViewXPResults.setText("XP: +117");
                    textViewGoldResults.setText("Gold: +74");
                    textViewLootResults.setText("Loot: none");
                } else {
                    textViewBattleResults
                            .setText("You have been defeated by a Thief Master!");
                    xp = xp + 0;
                    gold = gold + 0;
                    textViewXPValue.setText(String.valueOf(xp));
                    textViewGoldValue.setText(String.valueOf(gold));
                    textViewXPResults.setText("XP: 0");
                    textViewGoldResults.setText("Gold: 0");
                    textViewLootResults.setText("Loot: none");
                }
            }// Homunculus
            else if (spinnerMonsters.getSelectedItem().toString()
                    .equals("(30) Homunculus")) {
                textViewBattleResults.setVisibility(View.VISIBLE);
                if (level == 51) {
                    xp = xp + 0;
                }
                if (level > 30) {
                    textViewBattleResults
                            .setText("You have killed a Homunculus!");
                    xp = xp + 121;
                    gold = gold + 82;
                    textViewXPValue.setText(String.valueOf(xp));
                    textViewGoldValue.setText(String.valueOf(gold));
                    textViewXPResults.setText("XP: +121");
                    textViewGoldResults.setText("Gold: +82");
                    textViewLootResults.setText("Loot: none");
                } else {
                    textViewBattleResults
                            .setText("You have been defeated by a Homunculus!");
                    xp = xp + 0;
                    gold = gold + 0;
                    textViewXPValue.setText(String.valueOf(xp));
                    textViewGoldValue.setText(String.valueOf(gold));
                    textViewXPResults.setText("XP: 0");
                    textViewGoldResults.setText("Gold: 0");
                    textViewLootResults.setText("Loot: none");
                }
            }

        }
    }); /* Ends the button onClickListener */
}
}

Now I'm pretty sure the problem is where I put all my private int's and they all equal 0 or whatever when you first start playing. I'm so lost...

I deleted my onPause and onResume events because they were just not working and this is the code before i tried any of that.

Adariel Lzinski
  • 1,031
  • 2
  • 19
  • 43
  • This is quite basic question on Android. Have a look to http://stackoverflow.com/questions/151777/saving-activity-state-in-android – Dayerman Sep 30 '12 at 15:54

2 Answers2

0

All your variables have states at runtime. If you close your App every allocated memory and also the values stores in the variables are lost. You have to save such things for example in a SQLite database or an xml file on the device from which you can get the values back.

It could be helpful to read this tutorials about storage on android: Storage Options

Jan Koester
  • 1,178
  • 12
  • 26
0

You can save the values of your app in onPause() with someting like:

Editor editor = getSharedPreferences("myStatusFile", MODE_PRIVATE).edit();
editor.clear();
editor.putString("string1", string1);
editor.putInteger("integer1", integer1);
editor.commit();

and recover them in onResume() with:

SharedPreferences preferences = getSharedPreferences("myStatusFile", MODE_PRIVATE);
string1 = preferences.getString("string1",  null);
integer1 = preferences.getString("integer1",  0);

good luck

Luis
  • 11,978
  • 3
  • 27
  • 35