Увеличьте значение count в одной функции и используйте условие if для count в другой функции

#java #android #function

#java #Android #функция

Вопрос:

Я объявляю переменную count, я хочу увеличить значение count при вызове функции, и количество снова становится равным нулю, когда пользователь отправляет в основное действие, но проблема в том, что при вызове функции значение увеличивается, но оно не увеличивается в другой функции. Значение count увеличивается при вызове функции, но значение count остается неизменным, когда я вызываю его в другой функции, которая равна нулю

 package com.codewithosama.socialapp;        
        
public class SetupActivity extends AppCompatActivity {

    final static int gallery_pick = 1;

    // Here I declare count
    int count = 0;
    
    // Remaining code
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_setup);
        filePath.putFile(resultUri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
            @Override
            public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                filePath.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                    @Override
                    public void onSuccess(Uri uri) {
                        final String downloadUrl = uri.toString();
                        
                        // Here I am increasing value of count
                        usersRef.child("profile image").setValue(downloadUrl)
                                .addOnCompleteListener(new OnCompleteListener<Void>() {
                                    @Override
                                    public void onComplete(@NonNull Task<Void> task) {
                                        if (task.isSuccessful()) {

                                            Intent selfIntent = new Intent(SetupActivity.this, SetupActivity.class);
                                            startActivity(selfIntent);
                                            Toast.makeText(SetupActivity.this, "Image Stored", Toast.LENGTH_SHORT)
                                                    .show();
                                            loadingBar.dismiss();
                                            count = count   1;
                                            Log.d("count", String.valueOf(count));
                                        } else {
                                            String message = task.getException().getMessage();
                                            Toast.makeText(SetupActivity.this, "Error:"   message, Toast.LENGTH_SHORT)
                                                    .show();
                                            loadingBar.dismiss();
                                        }
                                    }
                                });
                    }

                });

            }

        });
    }

    // Remaining Code
    private void saveAccountSetupInfo() {
        Log.d("count", String.valueOf(count));
        String user_name = userName.getText().toString();
        String full_name = fullName.getText().toString();
        String country = countryName.getText().toString();
        // Log.d("uri",ImageUri.toString());

        if (TextUtils.isEmpty(user_name)) {
            Toast.makeText(this, "Please enter UserName ...", Toast.LENGTH_SHORT).show();
        }

        else if (count == 0) {
            Toast.makeText(this, "Please select a profile Image", Toast.LENGTH_SHORT).show();
        }

        else if (TextUtils.isEmpty(full_name)) {

            Toast.makeText(this, "Please enter Full Name ...", Toast.LENGTH_SHORT).show();
        } else if (TextUtils.isEmpty(country)) {
            Toast.makeText(this, "Please enter Country ...", Toast.LENGTH_SHORT).show();
        } else {
            usersRef.updateChildren(userMap).addOnCompleteListener(new OnCompleteListener() {
                @Override
                public void onComplete(@NonNull Task task) {
                    if (task.isSuccessful()) {

                        sendUserToMainActivity();
                        Toast.makeText(SetupActivity.this, "Your account updated successfully", Toast.LENGTH_SHORT)
                                .show();
                        loadingBar.dismiss();
                    } else {
                        String message = task.getException().getMessage();
                        Toast.makeText(SetupActivity.this, "Error occured :"   message, Toast.LENGTH_SHORT).show();
                        loadingBar.dismiss();
                    }
                }
            });
        }

    }

    // Here I am again assinging value of count zero
    private void sendUserToMainActivity() {
        Intent mainIntent = new Intent(SetupActivity.this, MainActivity.class);
        mainIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
        startActivity(mainIntent);
        finish();
        count = 0;
    }
}
  

Комментарии:

1. Будет намного проще ответить, если вы попытаетесь свести это к минимальному компилируемому примеру и отформатировать его с соответствующим отступом. Как сейчас, немного сложно следовать всем этим уровням вложенности.

2. пожалуйста, выровняйте свой код должным образом

Ответ №1:

Вы должны объявить count глобально общедоступным и статическим, например: public static int count = 0 . Делая это, вы можете использовать переменную count в другой функции, а также в другом классе, набрав: SetupActivity.count .