#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
.