Как сохранить данные при переключении между действиями в Android - PullRequest
0 голосов
/ 28 апреля 2020

Я новичок в Android Studio, но я пытался создать игровое приложение для своего школьного проекта. В нем игроки могут получить доступ к своему счету в любой момент времени. Я показываю баллы в другом упражнении, но когда я возвращаюсь к своему основному занятию, баллы сбрасываются (возвращаясь к значению, с которым я их объявил).

Я пытался умышленно, сохранял экземпляры и разделял предпочтения, но ни один из они сработали (или, может быть, я их неправильно использую).

names_activity (Main)

int scorea=0;
int scoreb=0;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_names_);

    mscr=(Button)findViewById(R.id.scrs);
    mta=(Button)findViewById(R.id.ta);
    mtb=(Button)findViewById(R.id.tb);
    mta.setEnabled(false);
    mtb.setEnabled(false);

    mTextView=(TextView)findViewById(R.id.fmname);
    mButton=(Button)findViewById(R.id.spin);

    mButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            showRandom();
            mta.setEnabled(true);
            mtb.setEnabled(true);
            mta.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    scorea++;
                    mta.setEnabled(false);
                    mtb.setEnabled(false);
                    mButton.setEnabled(true);


                }
            });
            mtb.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    scoreb++;
                    mta.setEnabled(false);
                    mtb.setEnabled(false);
                    mButton.setEnabled(true);
                }
            });

        }

    });
    mscr.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent=new Intent(names_Activity.this,scores_Activity.class);

            intent.putExtra("scoreA",Integer.toString(scorea));
            startActivity(intent);
        }
    });

}

Vars Scorea Scoreb сохранить результаты команды A и команды B, когда я переключаюсь на Scores_activity и возвращаюсь в names_activity (main) оценки сбрасываются до 0

Второе действие (отображает оценки)

public class scores_Activity extends AppCompatActivity {
private TextView mtas;
private TextView mtbs;
private Button mback;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_scores_);
    Intent intent=getIntent();
    mback=(Button)findViewById(R.id.back);
    mtas = (TextView)findViewById(R.id.tas);
    mtbs = (TextView)findViewById(R.id.tbs);
    String scorea= intent.getStringExtra("scoreA");
    mtas.setText(scorea);
    mback.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            Intent intent=new Intent(scores_Activity.this,names_Activity.class);
            startActivity(intent);
        }
    });


}
}

1 Ответ

0 голосов
/ 28 апреля 2020

Как сказал @ alan-deep, это довольно сложно понять без кода вообще. Но если бы я мог понять, вам нужно это: https://developer.android.com/guide/components/activities/activity-lifecycle

Это зависит от того, что приостановило / уничтожило вашу деятельность, поэтому вы также можете попробовать: A) onSaveInstanceState(Bundle outState) затем onRestoreInstanceState(Bundle savedInstanceState) или onCreate(Bundle savedInstanceState)

// invoked when the activity may be temporarily destroyed, save the instance state here
@Override
public void onSaveInstanceState(Bundle outState) {
    outState.putString(GAME_STATE_KEY, gameState);
    outState.putString(TEXT_VIEW_KEY, textView.getText());

    // call superclass to save any view hierarchy
    super.onSaveInstanceState(outState);
}

B) SharedPreferences. Если вы не можете восстановить свои данные, используя жизненный цикл android, попробуйте Этот подход .

C) Иногда ваши данные становятся более сложными, поэтому вам начинают требоваться более сложные структуры и отношения. В этом случае вы можете использовать локальную базу данных .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...