私はgithub上でミニDeezerプレーヤーを見つけましたが、Eclipseでコード化されていると思います。私はしかし、Android Studioで動作します。クラスは抽象宣言または抽象メソッドを実装する必要があります
それはnoobの質問でなければなりませんが、私はこの上で立ち往生しています私の最初のAndroidアプリをbeeingて:
Class 'Anonymous class derived from DialogListener' must either be declared abstract or implement abstract method 'onException(Exception)' in 'DialogListener'.
:
private DialogListener mDeezerDialogListener = new **DialogListener**() {
@Override
public void onComplete(Bundle values) {
// store the current authentication info
SessionStore sessionStore = new SessionStore();
sessionStore.save(mDeezerConnect, LoginActivity.this);
// Launch the Home activity
Intent intent = new Intent(LoginActivity.this, HomeActivity.class);
startActivity(intent);
}
@Override
public void onDeezerError(final DeezerError deezerError) {
Toast.makeText(LoginActivity.this, R.string.deezer_error_during_login,
Toast.LENGTH_LONG).show();
}
@Override
public void onError(final DialogError dialogError) {
Toast.makeText(LoginActivity.this, R.string.deezer_error_during_login,
Toast.LENGTH_LONG).show();
}
@Override
public void onCancel() {
Toast.makeText(LoginActivity.this, R.string.login_cancelled, Toast.LENGTH_LONG).show();
}
@Override
public void onOAuthException(OAuthException oAuthException) {
Toast.makeText(LoginActivity.this, R.string.invalid_credentials, Toast.LENGTH_LONG)
.show();
}
};`
大胆機能は私に読み込みエラーを与えています私は何が問題なのか分かりませんが、怪我に侮辱を加えるために、最初の@Overrideはうまくいきますが、2番目と3番目と最後のものは私にこのエラーを与えます:
Error:(91, 17) error: method does not override or implement a method from a supertype
これは作業用のコードスニペットであると考えられていますので、ここで何が問題なのですか?@Overridesのいくつかに対する苦情はなぜですか?
これら2つのエラーは接続されていますか?
EDIT1:
としては、私は別の関数を追加した提案:
@Override
public void onException(Exception exception) {
}
と最初のエラーが去っていきました。 githubの元のコードが以前のバージョンのSDK用に書かれていて、別のことをしたことがありますか?
@オーバーライドエラーが発生しました。しかし私が見る限り、それらはonExceptionのサブ例外ですか?
EDIT2:
これはDeezer SDKで定義されています
import com.deezer.sdk.network.connect.event.DialogListener;
私は彼らのドキュメントを探していますし、それが "メソッドの概要" の下に言及: onCancel()
、 onComplete(Bundle values)
、 onException(Exception exception)
。
また、 void onException(Exception exception)
は、認証処理中に例外がスローされたときに呼び出されます。
以下の例外が発生する場合があります OAuthException
、 DeezerError
、 DialogError
。
ここにすべての追加データを掲載すると思います。
EDIT3:
これは私がコードを書き直し方法です:Condition 'exception instanceof OAuthException' is always 'false'
:
@Override
public void onException(Exception exception) {
if(exception instanceof DeezerError){
Toast.makeText(LoginActivity.this, R.string.deezer_error_during_login,
Toast.LENGTH_LONG).show();
}
else if(exception instanceof DialogError){
Toast.makeText(LoginActivity.this, R.string.deezer_error_during_login,
Toast.LENGTH_LONG).show();
}
else if(exception instanceof OAuthException){
Toast.makeText(LoginActivity.this, R.string.invalid_credentials, Toast.LENGTH_LONG)
.show();
}
else{
//not implemented?
}
}
は、警告を与えます。
私はそれに取り組まなければなりませんが、これは別の質問です。
DialogListenerクラス(またはインターフェイス)定義を表示できますか?そして、はい、2つのエラーが接続されているようです。 – Thierry
これは、Deezer SDKで定義されています。import com.deezer.sdk.network.connect.event.DialogListener;私は彼らのドキュメントを見て、それは "メソッドの概要":onCancel()、onComplete(バンドル値)、onException(例外の例外)の下で言及しています。また、次のように述べています:void onException(例外例外)は、認証プロセス中に例外がスローされたときに呼び出されます。次の例外が発生する可能性があります。OAuthException、DeezerError、DialogError。私はエディタで何かが欠けていると思う? – iggy
@iggy私は自分の答えを更新しました。 – Thierry