Soru & Cevap

Activity arası geçişlerde verileri kaydetmek

22.01.2020 - 12:36

Activity arası geçişlerde verileri nasıl kayıt altında tutabilirim acaba ? 
Örneğin

activity1 deki yaş ve ağırlık verisi var. Buton ile activity2 ye geçiş yapıp oradan tekrar activity1 e döndüğümde activity1 deki bütün verilerim (yaş - ağırlık) varsayılan hale dönmüş oluyor. 

mainactivity den ---> sanalbebek ekranına geliyorum isim verisini alarak ----- bu geçişte açlık - kilo değerlerini kaydetmem gerek ---> hafiza oyunu ekranına isim verisini geçirerek geliyorum ----> sonuc ekranına geliyorum ----(buradaki kazandiMi verisini almam lazım) -->sanalBebek ekranına geçmem lazım ama bu kısımda bütün veriler sıfırlanıyor en baştaki hallerine dönüyor ve kazandiMi verisini alamıyorum 

MainActivity

package com.example.gelismis_bebek;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;


public class MainActivity extends AppCompatActivity {


    Button basla;
    public EditText isimVer;
    public String isim ;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        basla = findViewById(R.id.basla);

        isimVer = findViewById(R.id.isim);


        if (savedInstanceState != null){
            isim = savedInstanceState.getString("ism");
            isim = isimVer.getText().toString();
        }
        else {
            isim = isimVer.getText().toString();
        }

        basla.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                isim = isimVer.getText().toString();
                Intent i = new Intent(getApplicationContext(),sanalBebek.class);
                i.putExtra("ism",isim);
                startActivity(i);
            }
        });








    }
    public void onSaveInstanceState(Bundle outState){
        super.onSaveInstanceState(outState);
        outState.putString("ism",isim);


    }
}

sanalBebek

 protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sanal_bebek);

        besle = findViewById(R.id.besle);
        gezdir = findViewById(R.id.gezdir);
        uyut = findViewById(R.id.uyut);
        oyunOyna = findViewById(R.id.oyunOyna);

        durumAc = findViewById(R.id.progressBar);
        uykuBar = findViewById(R.id.uykuBar);
        eglenceBar = findViewById(R.id.eglenceBar);
        kiloBar = findViewById(R.id.kiloBar);

        isim = findViewById(R.id.isim);

        Intent ial = getIntent();
        isimal = ial.getStringExtra("ism");
        if (savedInstanceState != null){
            isimal = savedInstanceState.getString("isimal");
            isim.setText("BEBEĞİN İSMİ : "+isimal);
        }
        else {
            isim.setText("BEBEĞİN İSMİ : " + isimal);
        }

        Intent basa = getIntent();
        String kazandiMi = basa.getStringExtra("kazandiMi");

        eglenceBar.setProgress(veglence);
        durumAc.setProgress(vaclik);
        uykuBar.setProgress(vuyku);
        kiloBar.setProgress(vkilo);

        uyut.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                if (vuyku>= 30){
                    uykumVar = true;
                }else{
                    uykumVar=false;
                }
                if (vaclik <= 80){
                    aciktim = false;
                }else{
                    aciktim=true;
                }
                if (aciktim==true){
                    if (uykumVar==true){
                        Toast.makeText(getApplicationContext(),"Önce yemek yemem lazım \n Sonra uyumam gerek... ",Toast.LENGTH_LONG).show();
                    }else { // aç ama uykusu yok
                        rastgel = rnd.nextInt(4);
                        Toast.makeText(getApplicationContext(),YemekList[rastgel],Toast.LENGTH_LONG).show();
                    }
                }else {
                    if (uykumVar==false){ // aç değil ve uykusu yok ise;
                        rastgel = rnd.nextInt(4);
                        Toast.makeText(getApplicationContext(),NonUyList[rastgel],Toast.LENGTH_LONG).show();
                        uzuntu+=1;
                        if (uzuntu == 3){
                            uzuntu = 1;
                            if (veglence<10){
                                rastgel = rnd.nextInt(4);
                                Toast.makeText(getApplicationContext(),NonUyList[rastgel],Toast.LENGTH_LONG).show();
                            }else{
                                veglence = veglence - 2;
                                eglenceBar.setProgress(veglence);
                                rastgel = rnd.nextInt(4);
                                Toast.makeText(getApplicationContext(),NonUyList[rastgel],Toast.LENGTH_LONG).show();
                            }
                        }
                    }else{
                        vuyku = vuyku - 10;
                        uykuBar.setProgress(vuyku);
                        Toast.makeText(getApplicationContext(),"UYKUM AZALDI...",Toast.LENGTH_LONG).show();
                    }
                }
            }
        });
        
        besle.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                if (vuyku>= 70){
                    uykumVar = true;
                }else{
                    uykumVar=false;
                }
                if (vaclik <= 80){
                    aciktim = false;
                }else{
                    aciktim=true;
                }
                if (vkilo > 80){
                    kiloAlarm = true;
                }else{
                    kiloAlarm = false;
                }

                if (aciktim==false){
                    if (uykumVar==true){                        // karnı aç değil uykusu var ise;
                        rastgel = rnd.nextInt(4);
                        Toast.makeText(getApplicationContext(),UyList[rastgel]+"\n AÇ DEĞİLİM",Toast.LENGTH_LONG).show();
                    }else{                                      //karnı aç değil - uykusu yok ise;

                        if (vaclik<=20){                        // karnı tamamen doymuş ise; (kilo alsın; (kilo çok ise kilo dursun sadece eğlence azalsın)- eğlence azalsın)
                            if (kiloAlarm==false){
                                Toast.makeText(getApplicationContext(),"Kilo Alıyorum Galiba \n ZzZzZZzz",Toast.LENGTH_LONG).show();
                                if (veglence>10){
                                    vkilo+=2;
                                    kiloBar.setProgress(vkilo);
                                    vuyku+=5;
                                    uykuBar.setProgress(vuyku);
                                    veglence-=2;
                                    eglenceBar.setProgress(veglence);
                                }else{
                                    vkilo+=2;
                                    kiloBar.setProgress(vkilo);
                                    vuyku+=5;
                                    uykuBar.setProgress(vuyku);
                                }
                            }else{
                                Toast.makeText(getApplicationContext(),"ÇOK KİLO ALDIM ... \n SPOR LAZIM",Toast.LENGTH_LONG).show();

                                if (veglence>10){
                                    veglence-=2;
                                    eglenceBar.setProgress(veglence);
                                }
                            }
                        }else{              //vaclık 21 - 79 dahil arasındaysa;
                            vaclik = vaclik-5;
                            Toast.makeText(getApplicationContext(),"KARNIM DOYUYOR...",Toast.LENGTH_LONG).show();
                            durumAc.setProgress(vaclik);
                        }
                    }
                }else{                  //vaclık > 80 ise
                    vaclik = vaclik-10;
                    Toast.makeText(getApplicationContext(),"OHH SONUNDA KARNIM DOYUYOR...",Toast.LENGTH_LONG).show();
                    durumAc.setProgress(vaclik);
                }
            }
        });

        gezdir.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                if (vuyku>= 70){
                    uykumVar = true;
                }else {
                    uykumVar = false;
                }
                if (vaclik <= 80){
                    aciktim = false;
                }else {
                    aciktim = true;
                }
                if (vkilo > 80){
                    kiloAlarm = true;
                }else {
                    kiloAlarm=false;
                }

                if (uykumVar==true && aciktim==false){
                    uyVar = 10;
                }
                if (uykumVar==false && aciktim==true){
                    uyVar = 1;
                }
                if (uykumVar==true && aciktim==true){
                    uyVar = 11;
                }if (uykumVar==false && aciktim==false){
                    uyVar=0;
                }

                switch (uyVar){
                    default:
                        Toast.makeText(getApplicationContext(),"LÜTFEN DAHA SONRA DENEYİNİZ ... ",Toast.LENGTH_LONG).show();
                    case 10:
                        rastgel = rnd.nextInt(4);
                        Toast.makeText(getApplicationContext(),UyList[rastgel],Toast.LENGTH_LONG).show();
                        break;
                    case 1:
                        rastgel = rnd.nextInt(4);
                        Toast.makeText(getApplicationContext(),YemekList[rastgel],Toast.LENGTH_LONG).show();
                        break;
                    case 11:
                        rastgel = rnd.nextInt(4);
                        Toast.makeText(getApplicationContext(),UyList[rastgel]+"\n"+YemekList[rastgel],Toast.LENGTH_LONG).show();
                        break;
                    case 0:
                        gezdirSay++;

                        if (gezdirSay >= 3){
                            gezdirSay = 0;
                            if (vaclik< 100){
                                vaclik += 5;
                                durumAc.setProgress(vaclik);
                            }
                            if (vuyku<100){
                                vuyku += 5;
                                uykuBar.setProgress(vuyku);
                            }
                            if (vkilo>5){
                                vkilo--;
                                kiloBar.setProgress(vkilo);
                            }
                            Toast.makeText(getApplicationContext(),"GALİBA SPOR YAPIYORUM..",Toast.LENGTH_LONG).show();
                        }else{
                            if (vaclik< 100){
                                vaclik += 5;
                                durumAc.setProgress(vaclik);
                            }
                            if (vuyku<100){
                                vuyku += 5;
                                uykuBar.setProgress(vuyku);
                            }
                            if (veglence<100){
                                veglence++;
                                eglenceBar.setProgress(veglence);
                            }
                            Toast.makeText(getApplicationContext(),"VAYY , ETRAF ÇOK GÜZEL..",Toast.LENGTH_LONG).show();
                        }
                        break;
                }
            }
        });
        
        oyunOyna.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Activity(oyunOyna);
            }
        });


        if (savedInstanceState != null){
            veglence = savedInstanceState.getInt("veglence");
            eglenceBar.setProgress(veglence);
        }
        else {
            veglence = 30;
        }
        if (savedInstanceState != null){
            vaclik = savedInstanceState.getInt("vaclik");
            durumAc.setProgress(vaclik);
        }
        else {
            vaclik = 90;
        }
        if (savedInstanceState != null){
            vuyku = savedInstanceState.getInt("vuyku");
            uykuBar.setProgress(vuyku);
        }
        else {
            vuyku = 50;
        }
        if (savedInstanceState != null){
            vkilo = savedInstanceState.getInt("veglence");
            kiloBar.setProgress(vkilo);
        }
        else {
            vkilo = 30;
        }

    }

    public void Activity(View view){
        Intent gecis = new Intent(getApplicationContext(),hafizaOyunu.class);
        gecis.putExtra("ism",isimal);
        startActivity(gecis);
    }

    public void Bildirim(String baslik,String metin){
        NotificationManager man = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
        Notification.Builder bd = new Notification.Builder(sanalBebek.this);
        bd.setContentTitle(baslik);
        bd.setContentText(metin);
        bd.setSmallIcon(R.drawable.onay);
        bd.setAutoCancel(true);

        Notification nt = bd.getNotification();
        man.notify(1,nt);
    }

    protected void onSaveInstanceState(Bundle outState){
        super.onSaveInstanceState(outState);
        outState.putInt("veglence",veglence);
        outState.putInt("vuyku ",vuyku);
        outState.putInt("vkilo",vkilo);
        outState.putInt("vaclik",vaclik);
        outState.putString("isimal",isimal);

    }
}

hafizaoyunu

package com.example.gelismis_bebek;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.widget.GridLayout;
import android.widget.TextView;

import java.util.Arrays;
import java.util.Collections;

public class hafizaOyunu extends AppCompatActivity {

    int sonkart = 0;
    boolean bekle = false;
    int kullanimHakki = 5;
    int dogruTahmin = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_hafiza_oyunu);


        Intent intnt = getIntent();
        String isim = intnt.getStringExtra("ism");
        TextView karsilama = findViewById(R.id.karsilamaTv);
        karsilama.setText(isim + " Hoş geldiniz!");

        GridLayout gd = findViewById(R.id.grdLyt);
        int satir = 2;
        int sutun = 2;
        final int adet = satir * sutun;
        gd.setColumnCount(satir);
        gd.setRowCount(sutun);
        Kart[] kartlar = new Kart[adet];
        for (int i = 0; i < adet; i++) {
            if (i % 2 == 0) {
                kartlar[i] = new Kart(getApplicationContext(), i, i + 10);
            } else {
                kartlar[i] = new Kart(getApplicationContext(), i - 1, i + 10);
            }
            kartlar[i].setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if (kullanimHakki < 1) {
                        Intent bitis = new Intent(getApplicationContext(), Sonuc.class);
                        bitis.putExtra("kazandiMi","0");
                        startActivity(bitis);
                        return;
                    }
                    final Kart suankiKart = (Kart) v;
                    if (suankiKart.acikMi == true || bekle == true) {
                        return;
                    }
                    suankiKart.dondur();
                    if (sonkart > 0) {
                        final Kart oncekiKart = findViewById(sonkart);
                        if (oncekiKart.resId == suankiKart.resId) {
                            dogruTahmin += 2;
                            oncekiKart.eslesti = true;
                            suankiKart.eslesti = true;
                            if (dogruTahmin == adet) {
                                Intent bitis = new Intent(getApplicationContext(), Sonuc.class);
                                bitis.putExtra("kazandiMi", "1");
                                startActivity(bitis);
                                return;
                            }
                        } else {
                            bekle = true;
                            kullanimHakki--;
                            Handler h1 = new Handler();
                            h1.postDelayed(new Runnable() {
                                @Override
                                public void run() {
                                    oncekiKart.dondur();
                                    suankiKart.dondur();
                                    bekle = false;
                                }
                            }, 2000);

                        }

                        sonkart = 0;
                    } else {
                        sonkart = suankiKart.getId();
                    }
                }
            });

        }
        Collections.shuffle(Arrays.asList(kartlar));
        for (Kart k : kartlar) {
            gd.addView(k);
        }
    }
}

sonuc

package com.example.gelismis_bebek;

import androidx.appcompat.app.AppCompatActivity;

import android.app.Notification;
import android.app.NotificationManager;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;


public class Sonuc extends AppCompatActivity {

    String kazandiMi;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sonuc);

        Intent bitisal = getIntent();
        kazandiMi = bitisal.getStringExtra("kazandiMi");
        TextView sonucTv = findViewById(R.id.sonucText);
        Button again = findViewById(R.id.again);

        if (kazandiMi.equals("1")){
            sonucTv.setText("TEBRİKLER KAZANDINIZ ");
            ImageView onay = new ImageView(getApplicationContext());
            onay.setImageResource(R.drawable.onay);
            Toast onayMak = new Toast(getApplicationContext());
            onayMak.setView(onay);
            onayMak.setDuration(Toast.LENGTH_SHORT);
            onayMak.show();
            Bildirim("TEBRİKLER","10 PUAN KAZANDINIZ...");
        }else{
            sonucTv.setText("MALESEF TEKRAR DENE");
            Toast.makeText(getApplicationContext(),"Yinede eğlenceliydi",Toast.LENGTH_LONG).show();
        }


        again.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                Intent basa = new Intent(getApplicationContext(),sanalBebek.class);
                basa.putExtra("kazandiMi",kazandiMi);
                startActivity(basa);
            }
        });



    }
    public void Bildirim(String baslik,String metin){
        NotificationManager man = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
        Notification.Builder bd = new Notification.Builder(Sonuc.this);
        bd.setContentTitle(baslik);
        bd.setContentText(metin);
        bd.setSmallIcon(R.drawable.onay);
        bd.setAutoCancel(true);

        Notification nt = bd.getNotification();
        man.notify(1,nt);
    }
}

 

18 Görüntülenme

1 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

Profile picture for user ismakdas
ismakdas
23.01.2020 - 11:24

Bu işlemi bence sqlite (veritabanı) kullanarak yapınız .

Ahmet Rıza Ateş
30.01.2020 - 12:40
SharedPreferences en mantıklısı Veritabanı çok fazla kaynak harcar.