新しい Google Play デベロッパー コンソールでホストされているリーダーボードをゲームに実装したいと考えています。チュートリアルでは、Activity クラスを で拡張する必要がありますBaseGameActivity
。2 つの異なるクラスを拡張することはできないため、extends BaseGameActivity
その場所を見つける別のクラスを作成BaseGameActivity
して、必要なときに MainActivity (UI 要素などの Activity を拡張する) から呼び出すことができるようにするのが理にかなっていると考えました。
MainActivity でサインイン関数を呼び出します。
public void onClick(View v) {
if (v.getId() == R.id.sign_in_button) {
new Submit().signin();
}
Submit は BaseGameActivity を拡張するクラスで、メソッドsignin()
は次のようになります。
public void signin()
{ beginUserInitiatedSignIn();}
そのようにすると、Googleのサインインボタンをクリックすると、次のエラーが表示されます(アプリは強制的に閉じられます):
07-02 02:34:35.491: E/AndroidRuntime(21287): java.lang.NullPointerException
07-02 02:34:35.491: E/AndroidRuntime(21287): at android.content.ContextWrapper.getApplicationContext(ContextWrapper.java:131)
07-02 02:48:51.178: E/AndroidRuntime(21431): FATAL EXCEPTION: main
07-02 02:48:51.178: E/AndroidRuntime(21431): java.lang.NullPointerException
07-02 02:48:51.178: E/AndroidRuntime(21431): at android.content.ContextWrapper.getPackageManager(ContextWrapper.java:116)
07-02 02:48:51.178: E/AndroidRuntime(21431): at com.google.android.gms.common.GooglePlayServicesUtil.isGooglePlayServicesAvailable(Unknown Source)
07-02 02:48:51.178: E/AndroidRuntime(21431): at com.google.example.games.basegameutils.GameHelper.beginUserInitiatedSignIn(GameHelper.java:445)
07-02 02:48:51.178: E/AndroidRuntime(21431): at com.google.example.games.basegameutils.BaseGameActivity.beginUserInitiatedSignIn(BaseGameActivity.java:132)
07-02 02:48:51.178: E/AndroidRuntime(21431): at PACKAGENAME.Submit.signin(Submit.java:25)
07-02 02:48:51.178: E/AndroidRuntime(21431): at PACKAGENAME.APPNAME.MainActivity.onClick(MainActivity.java:181)
コンテキストの取得などをいじろうとすると、かなり似たようなエラーが表示されます。
別のクラスでGoogleメソッドを管理するという私の考えは間違っていますか、それともそのように元に戻すことさえできますか? そうでない場合、Activity を拡張したいために拡張していないときに、UI 要素をどのように管理すればよいBaseGameActivity
ですか?
私のテキストが乱雑に見える場合は申し訳ありませんが、私は今この問題に6時間座っていて、目が出血しています..
回答ありがとうございます