我有一个通过改进连接到API的android应用,如果我按回退按钮返回到登录活动,如果我尝试重新登录,则成功登录在再次,该应用程序崩溃,并给我一个NullPointerException。当我尝试重新登录时,Android应用崩溃
这里的连接代码
private void loginUser(String email, String password) {
UnifyAuthenticationApiInterface service = this.client.create(UnifyAuthenticationApiInterface.class);
Call<UnifyAuthenticationApiResponse> call = service.staffLogin(email, password);
call.enqueue(new Callback<UnifyAuthenticationApiResponse>() {
@Override
public void onResponse(Call<UnifyAuthenticationApiResponse> call,
Response<UnifyAuthenticationApiResponse> response) {
UnifyAuthenticationApiResponse result = response.body();
School school = new School();
com.peterstev.unify.login.Data data = result.getData();
mySchoolsList = new ArrayList<School>();
mySchoolsList = data.getSchools();
staff = data.getStaff();
gotoHomeActivity();
}
@Override
public void onFailure(Call<UnifyAuthenticationApiResponse> call, Throwable t) {
progressDialog.dismiss();
Toast.makeText(MainActivity.this, "Login Failed @ onFailure", Toast.LENGTH_SHORT).show();
}
});
}
和goToHomeActivity()是
private void gotoHomeActivity() {
progressDialog.dismiss();
if (mySchoolsList.size() > 1) {
schoolsListView = new ListView(MainActivity.this);
schoolsArrayAdapter = new SchoolListAdapter(MainActivity.this, android.R.layout.simple_list_item_1, mySchoolsList);
schoolsListView.setAdapter(schoolsArrayAdapter);
dialog = new Dialog(MainActivity.this);
dialog.setContentView(schoolsListView);
dialog.setTitle("Welcome " + staff.getFullName());
dialog.show();
} else {
Intent intent = new Intent(MainActivity.this, NavMainActivity.class);
startActivity(intent);
}
}
的NullPointerException异常被在
com.peterstev.unify.login.Data data = result.getData();
首先抛出,它得到的数据n成功地记录在,但是当我使用后退按钮ñ尝试再次登录它崩溃。
无法判断您的后端调用返回的内容。放置导致NPE并在调试模式下运行的断点。然后只是检查为什么结果为空。也许某种保护措施太频繁地调用登录。尝试用Postman或类似工具重新创建这种情况。 – 3mpty
您是否清除点击后退按钮的所有数据? @Light –
我并未清除任何数据。或者当我回去时必须重新创建活动? @Partha – Light