2014-01-24 44 views
0

我試圖阻止我的Android應用程序使用andengine的Google Plus簽名按鈕,我得到一個NullPointException。 這裏是我的代碼andengine谷歌加號簽名按鈕

public class GameActivity extends BaseGameActivity implements ConnectionCallbacks,   OnConnectionFailedListener{ 

public static GameActivity gameActivity; 
public static ProgressDialog mConnectionProgressDialog; 

public static PlusClient mPlusClient; 
public static ConnectionResult mConnectionResult; 
private static final int REQUEST_CODE_RESOLVE_ERR = 9000 

public void onCreate(Bundle savedInstanceState) { 
gameActivity = this; 
} 

public static void buttonPressed() { 
    Log.e("pushNotification", "buttonPressed"); 
    if (!mPlusClient.isConnected()) { 

     if (mConnectionResult == null) { 
       mConnectionProgressDialog.show(); 
      } 

     try { 

       mConnectionResult.startResolutionForResult(gameActivity,REQUEST_CODE_RESOLVE_ERR); 
      } catch (SendIntentException e) { 
       mConnectionResult = null; 
       mPlusClient.connect(); 
      } 
    } 

}

靜態方法buttonPressed被稱爲我的菜單場景。它工作得很好,直到它崩潰上的代碼行:

mConnectionResult.startResolutionForResult(gameActivity, REQUEST_CODE_RESOLVE_ERR); 

如我貼,它被稱爲在「試試看」的一部分。

有沒有人可以幫助我?我做錯了什麼?我必須通過什麼參數而不是「gameActivity」? 非常感謝

+0

是它這是造成NPE的gameActivity? (例如,是否爲空?) –

+0

是的。實際上,我在另一款不使用andengine的遊戲中實現了google plus,我只是將「Activiy.this」作爲參數並且它可以工作。但我不能寫gameActivity.this,我得到一個錯誤,說它無法解析爲 – user3216280

回答

0

在UI線程運行buttonPressed()方法如下:

Activity.this.runOnUiThread(new Runnable() { 

      @Override 
      public void run() { 

       buttonPressed(); 
      } 
     }); 

試試這個

+0

你好,謝謝你的回答。實際上,buttonPressed()在我的MainMenu場景中使用以下代碼調用:GameSceneManager.getInstance()。getBaseGame()。runOnUiThread(new Runnable(){public void run(){gameActivity.buttonPressed();}}) : - >與你的代碼非常相似,它不起作用! – user3216280

+0

你有沒有例外?如果是,請提供日誌。 – Rama