应用程序在不同设备上崩溃

App Crahes in different devices

因此,我的应用程序在其他 3 台设备上崩溃,但它在我从开发过程开始以来一直使用的设备上运行良好。当我检查 LogCat 时,我得到了这个错误:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.......MainActivity}:

java.lang.NullPointerException: Attempt to invoke virtual method

java.lang.String
 com.parse.ParseUser.getUsername() on a null object reference

我认为是因为这段代码:

    //get current user
    ParseUser currentUser = ParseUser.getCurrentUser();

    //get current user username and turn it to string
    final String currentUserUsername = currentUser.getUsername();

    //identify if current user is logged in
    if (currentUser != null) {
        // bring user to homepage and do stuff with the user
        ParseQuery<ParseObject> query = new ParseQuery<ParseObject>("My");
        query.orderByDescending("createdAt");
        query.whereEqualTo("user", currentUserUsername);
        query.findInBackground(new FindCallback<ParseObject>() {
            @Override
            public void done(List<ParseObject> personObject, ParseException e) {
                if(e == null){
                    //success
                    Toast.makeText(MainActivity.this, "Welcome Back, " + currentUserUsername + "!", Toast.LENGTH_SHORT).show();

                    mPerson = peopleObject;

                    MyPeopleAdapter adapter = new MyPeopleAdapter(getListView().getContext(), mPerson);
                    setListAdapter(adapter);
                } else {
                    //problem
                    Toast.makeText(MainActivity.this, "There is a problem. Please try again later.", Toast.LENGTH_SHORT).show();
                }
            }
        });
    } else {
        // show the signup or login screen
        Intent SignIn = new Intent(this, SignInActivity.class);
        startActivity(SignIn);
    }

但是,这怎么会是个问题呢?我一直在使用第一台设备一次又一次地登录和退出应用程序,没有任何问题。为什么它会导致其他设备出现问题?

更新:

我刚刚发现如果删除代码,该应用程序就可以正常运行。但是当我有代码时它不起作用。

您可以通过从 Null 检查外部删除有问题的行并将其插入 if 循环来避免崩溃::

//identify if current user is logged in
if (currentUser != null) {
    //get current user username and turn it to string
    final String currentUserUsername = currentUser.getUsername(); //this line was outside earlier
   //rest of code
}