Не считается и сбивается счётчик

Обычный кликер, который, при нажатии на кнопку, считает количество кликов, но, при запуске этого кода возникли 2 проблемы:

  1. Не работает счётчик, но, если убрать 37-40 строчки, то всё опять считает.
  2. При повороте экрана сбрасывается счётчик, хотя все методы для его сохранения есть.
package com.example.myapplication;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.text.Layout;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebView;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.app.Activity;
import android.view.Menu;
import android.widget.Toast;
import android.util.Log;


public class MainActivity extends AppCompatActivity {
    private Integer counter = 0;
    private Integer counter2 = 100;
    public static final String TAG = "StartActivity";
    private Integer count = 5;

    Button plus_ruble;
    TextView balance;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        plus_ruble = (Button) findViewById(R.id.plus_ruble);
        balance = (TextView) findViewById(R.id.balance);
        Plus_ruble();
        TextView counterView = (TextView) findViewById(R.id.balance);
        counterView.setText(counter.toString());
        setContentView(R.layout.activity_main);
        Toast.makeText(this, "onCreate()", Toast.LENGTH_LONG).show();
        setContentView(R.layout.activity_main);
        Log.d(TAG, "onCreate");

    }

    @Override
    public void onRestoreInstanceState(Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState);
        if (savedInstanceState != null &&
                savedInstanceState.containsKey("count")) {
            count = savedInstanceState.getInt("count");
        }
        Log.d(TAG, "onRestoreInstanceState");
    }

    @Override
    public void onRestart(){
        super.onRestart();
        Log.d(TAG, "onRestart");
    }

    @Override
    public void onStart(){
        super.onStart();
        Log.d(TAG, "onStart");
        resetUI();

    }

    @Override
    public void onResume(){
        super.onResume();
        Log.d(TAG, "onResume");
    }

    @Override
    public void onSaveInstanceState(Bundle savedInstanceState) {
        super.onSaveInstanceState(savedInstanceState);
        savedInstanceState.putInt("count", count);
        Log.d(TAG, "onSaveInstanceState");
    }

    @Override
    public void onPause(){
        super.onPause();
        Log.d(TAG, "onPause");
    }

    @Override
    public void onStop(){
        super.onStop();
        Log.d(TAG, "onStop");
    }

    @Override
    public void onDestroy(){
        super.onDestroy();
        Log.d(TAG, "onDestroy");
    }

    private void resetUI() {
        ((TextView) findViewById(R.id.balance)).setText(counter.toString());
        Log.d(TAG, "resetUI");
    }


    public void onClickBtnAddRuble(TextView textView) {
        counter++;
        TextView counterView = (TextView) findViewById(R.id.balance);
        counterView.setText(counter.toString());

        if(counter >= 1){
            TextView layout = findViewById(R.id.balance);
            ViewGroup.LayoutParams params = layout.getLayoutParams();
            params.height = 100;
            params.width = 150;
            layout.setLayoutParams(params);
        }

        if(counter >= 4){
            TextView layout = findViewById(R.id.balance);
            ViewGroup.LayoutParams params = layout.getLayoutParams();
            params.height = 200;
            params.width = 300;
            layout.setLayoutParams(params);
        }
    }


        void Plus_ruble() {
            plus_ruble.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    counter += counter2;
                    balance.setText(counter + "");
                }
            });

        }
    }

Ответы (1 шт):

Автор решения: Vitaliy Martynyuk

Чтобы не сбивался счетчик добавьте в Manifest в тег вашего <activity/> строчку android:configChanges="orientation" Оно должно выглядеть примерно так:

        <activity
        android:name=".MainActivity"
        android:configChanges="orientation" />

Дело в том, что при смене ориентации устройства активность перезапускается, а этот код не дает ей перезапускаться.

→ Ссылка