У меня есть Google Map Activity, которая запускается после входа пользователя в систему с помощью сервера Back4App Parse. В методе onCreate этого действия я могу напечатать имя пользователя в LogCat с вызовом ParseUser.getCurrentUser (). GetUsername (). Я могу напечатать это снова в методе onMapReady с тем же самым вызовом. Однако, когда я go для выхода пользователя из системы после нажатия кнопки выхода из системы, ParseUser.getCurrentUser (). GetUsername () возвращает ноль и вылетает из моего приложения. Я знаю, что могу хранить имя пользователя в строке, когда вызов работает, но я хочу знать, ПОЧЕМУ пользователь недоступен в моем методе onClick.
public class PassengerMapActivity extends FragmentActivity implements OnMapReadyCallback,
View.OnClickListener {
private GoogleMap map;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_passenger_map);
// Obtain the SupportMapFragment and get notified when the map is ready to be used.
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
Log.i("onCreate", ParseUser.getCurrentUser().getUsername()); // this works
}
@Override
public void onMapReady(GoogleMap googleMap) {
map = googleMap;
Log.i("onMapReady", ParseUser.getCurrentUser().getUsername()); // this works too
locationListener = new LocationListener() {
@Override
public void onLocationChanged(Location location) {
updateMapCamera(location);
}
... // unused interface methods
};
}
@Override
public void onClick(View view) {
switch(view.getId()) {
case R.id.btn_logout_passenger:
final String currentUser = ParseUser.getCurrentUser().getUsername(); // this returns null
ParseUser.logOutInBackground(new LogOutCallback() {
@Override
public void done(ParseException e) {
if(e == null) {
Toast.makeText(PassengerMapActivity.this,
currentUser + " has logged out", Toast.LENGTH_SHORT).show();
}
}
});
break;
Информация журнала: 2020-03-22 17: 11: 47.035 2969-2969 / packageName E / AndroidRuntime: FATAL EXCEPTION: main Process: packageName, PID: 2969 java .lang.NullPointerException: попытка вызвать виртуальный метод 'java .lang.String com.parse.ParseUser. getUsername () 'для пустой ссылки на объект