原因:java.lang.NullPointerException:尝试对空对象引用调用接口方法

原因:java.lang.NullPointerException:尝试对空对象引用调用接口方法,java,android,android-studio,nullpointerexception,Java,Android,Android Studio,Nullpointerexception,我无法将高分提交到android排行榜。现在排行榜是空的,没有提交任何内容。我有一个int“oldScore”需要提交。现在我正在尝试一段代码来提交它,但是调用该活动时会崩溃。我的代码: public class GameOver extends BaseGameActivity implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener { private Goo

我无法将高分提交到android排行榜。现在排行榜是空的,没有提交任何内容。我有一个int“oldScore”需要提交。现在我正在尝试一段代码来提交它,但是调用该活动时会崩溃。我的代码:

public class GameOver extends BaseGameActivity implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener {

    private GoogleApiClient mGoogleApiClient;
    public static int score;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_game_over);

        mGoogleApiClient.connect();
        mGoogleApiClient = new GoogleApiClient.Builder(this)
        .addApi(Drive.API)
        .addScope(Drive.SCOPE_FILE)
        .addConnectionCallbacks(this)
        .addOnConnectionFailedListener(this)
        .build();

        int newScore = GameOver.score;

        SharedPreferences prefs = this.getSharedPreferences("myPrefsKey", Context.MODE_PRIVATE);

        int oldScore = prefs.getInt("key", 0);
        if (newScore > oldScore) {
            SharedPreferences.Editor edit = prefs.edit();
            edit.putInt("key", newScore);
            edit.commit();

            EditText HighScore = (EditText) findViewById(R.id.HighScoreT);
            HighScore.setText("" + newScore);
        } else {
            EditText HighScore = (EditText) findViewById(R.id.HighScoreT);
            HighScore.setText("" + oldScore);
            Games.Leaderboards.submitScoreImmediate(getApiClient(),String.valueOf(R.string.number_guesses_leaderboard), oldScore);
        }
    }
日志:

原因:java.lang.NullPointerException:尝试调用接口 方法无效 空值上的com.google.android.gms.common.api.GoogleAppClient.connect() 对象引用

声明

mGoogleApiClient.connect();

应在您调用该方法的
mGoogleApiClient
实例化后出现

connect()
论客体

mGoogleApiClient
没有实例化它

你需要先写这个

  mGoogleApiClient = new GoogleApiClient.Builder(this)
                .addApi(Drive.API)
                .addScope(Drive.SCOPE_FILE)
                .addConnectionCallbacks(this)
                .addOnConnectionFailedListener(this)
                .build();  
那么这个,

mGoogleApiClient.connect();

在初始化
mGoogleApiClient
引用之前,无法调用
connect()
。像

// mGoogleApiClient.connect();
mGoogleApiClient = new GoogleApiClient.Builder(this)
                .addApi(Drive.API)
                .addScope(Drive.SCOPE_FILE)
                .addConnectionCallbacks(this)
                .addOnConnectionFailedListener(this)
                .build();       
mGoogleApiClient.connect(); // <-- move to here.
//mGoogleApiClient.connect();
mgoogleapclient=新的Googleapclient.Builder(此)
.addApi(Drive.API)
.addScope(驱动器.SCOPE\u文件)
.addConnectionCallbacks(此)
.addOnConnectionFailedListener(此)
.build();
mGoogleApiClient.connect();// 尝试以下过程:
在加载contentview之前分配google客户端:

private GoogleApiClient mGoogleApiClient;
public static int score;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    mGoogleApiClient = new GoogleApiClient.Builder(this)
    .addApi(Drive.API)
    .addScope(Drive.SCOPE_FILE)
    .addConnectionCallbacks(this)
    .addOnConnectionFailedListener(this)
    .build();

    setContentView(R.layout.activity_game_over);
}
在启动时添加覆盖并连接google客户端

@Override
     public void onStart() {
        super.onStart();
        mGoogleApiClient.connect();
    }

@Override
public void onStop() {
    super.onStop();
    mGoogleApiClient.disconnect();
}

执行此操作时,会出现以下错误:“java.lang.RuntimeException:无法启动活动组件信息:java.lang.IllegalStateException:GoogleAppClient尚未连接。”执行此操作时,会出现以下错误:“java.lang.RuntimeException:无法启动活动组件信息:java.lang.IllegalStateException:GoogleAppClient尚未连接。”如果您正在使用google登录,您应该从onStart()调用该方法。我刚刚创建了onStart()和onStop()方法,并将mgoogleAppClient.connect()放入;在OnStart中,我得到了相同的错误。当我删除“Games.Leadboards.SubmitCoreImmediate(getApiClient(),String.valueOf(R.String.number\u guesses\u Leadboard),oldScore”时;“我的活动工作正常..这就是我的错误来源。我应该如何更改它以提交分数?当我这样做时,我会收到以下错误:“java.lang.RuntimeException:无法启动活动组件信息:java.lang.IllegalStateException:GoogleAppClient尚未连接。”。“好的。听起来我们已经修复了您的
NullPointerException
。你对你的工作做过任何研究吗?