Как сохранить постоянное значение переменной, когда ее метод вызывается в методе onCreate ()? - PullRequest
0 голосов
/ 14 июля 2020

Я создаю простое android приложение, которое показывает количество нажатий кнопки в другом действии. Моя проблема в том, что я выполняю намерение и увеличиваю счет одним и тем же методом, то есть onClick () кнопки в первом действии. Моя проблема в том, что счетчик сбрасывается, когда я возвращаюсь к первому фрагменту, что мне теперь делать.

это мое первое действие метода onCreate ().

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

    Previous = findViewById(R.id.PreButton);
    PreTextView = findViewById(R.id.PreCount);
    previousIntent = new Intent(getApplicationContext(), MainActivity2.class);
    previous();
    nxtClickCount();
}

public void previous() {
    mainActivity2 = new MainActivity2();
    Previous.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            count++;
            Log.i(TAG, "onClick 2 : " + count);
            startActivity(previousIntent);
            PreTextView.setText("Next Button Count Is " + mainActivity2.count);
        }
    });
}

Это мой второе действие метода onCreate ().

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

    Next = findViewById(R.id.Nxtbutton);
    NxtTextView = findViewById(R.id.NxtCount);
    nextIntent = new Intent(getApplicationContext(), MainActivity.class);
    next();
    preClickCount();
}

public void next() {
    mainActivity = new MainActivity();
    Next.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            count++;
            Log.i(TAG, "onClick: " + count);
            startActivity(nextIntent);
            NxtTextView.setText("Previous Button Count Is " + mainActivity.count);
        }
    });
}

Ответы [ 3 ]

1 голос
/ 14 июля 2020

Activity в Android создается системой, когда вы ее запускаете, вы никогда не должны «создавать» Activity. Обменивайтесь данными между активностями, вы можете использовать Intent.putExtra("myCount", count) в своем первом действии и Intent.getInt("myCount") во втором действии.

И вы также можете использовать приложение (определение собственного класса приложения расширяет класс приложения и определяет количество в приложении, не забудьте поместить свое приложение в AndroidManifest. xml), вы можете использовать ((App)Context.getApplication).count для доступа к своему «счету» в Activity / Service и et c.

Связанный метод, который вам следует konw - это startActivityForResult и onActivityResult, этот связанный метод дает вам возможность получить обратно данные из второго действия.

0 голосов
/ 16 июля 2020

Мы должны сохранить переменную как STATI C.

Здесь я сделал свою переменную count как stati c. В моем вопросе я этого не делал.

Button Next;
TextView NxtTextView;
Intent nextIntent;
public static int count = 0;
MainActivity2 mainActivity2;

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

    Next = findViewById(R.id.Nxtbutton);
    NxtTextView = findViewById(R.id.NxtCount);
    nextIntent = new Intent(getApplicationContext(), MainActivity2.class);

    next();
    preClickCount();
}

public void next() {
    mainActivity2 = new MainActivity2();
    Next.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            count++;
            Log.i(TAG, "onClick: " + count);
            startActivity(nextIntent);
        }
    });
}
0 голосов
/ 15 июля 2020

Вам необходимо сохранить и получить значение с помощью onSaveInstanceState () и, в onCreate (), получить значение из сохраненного состояния:

https://developer.android.com/guide/components/activities/activity-lifecycle

...