我在github上找到了一个迷你Deezer播放器,但我认为它已经在Eclipse中编码了.然而,我在Android Studio工作.
Beeing我的第一个Android应用程序它必须是一个noob问题,但我坚持这个:
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();
}
};`
Run Code Online (Sandbox Code Playgroud)
该大胆的功能是给我的读取错误:
类''派生自DialogListener的匿名类'必须被声明为abstract或在'DialogListener'中实现抽象方法'onException(Exception)'.
我不知道是什么问题,但是为了加重伤害,第一个@Override一切都很顺利,但是第二个,第三个和最后一个给了我这个错误:
错误:(91,17)错误:方法不会覆盖或实现超类型的方法
这应该是一个有效的代码片段,所以这里有什么问题,为什么对某些@Overrides的投诉呢?
这两个错误是否相关?
EDIT1:
建议我添加另一个功能:
@Override
public void onException(Exception exception) {
}
Run Code Online (Sandbox Code Playgroud)
并且第一个错误消失了.可能是github上的原始代码是为以前版本的SDK编写的,它做的事情不同吗?
@Override错误仍然存在.但据我所知,那些是onException的子例外?
EDIT2:
这在Deezer SDK中定义:
import com.deezer.sdk.network.connect.event.DialogListener;
Run Code Online (Sandbox Code Playgroud)
我在看他们的文档,并将其"方法摘要"下提到:
onCancel(),
onComplete(Bundle values),
onException(Exception exception).
它还说:
void onException(Exception exception)在身份验证过程中抛出异常时调用.
以下例外情况可提出:
OAuthException,
DeezerError,
DialogError.
我想我会在这里发布所有其他数据.
EDIT3:
这就是我重写代码的方式:
@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?
}
}
Run Code Online (Sandbox Code Playgroud)
发出警告:Condition 'exception instanceof OAuthException' is always 'false'.
我将不得不继续努力,但这是一个不同的问题.
正如您在评论中提到的,Deezer doc说DialogListener有3个方法:onCancel(),onComplete(Bundle values),onException(异常异常).
所以你必须只实现这3个功能.
@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 onCancel() {
Toast.makeText(LoginActivity.this, R.string.login_cancelled, Toast.LENGTH_LONG).show();
}
@Override
public void onException(Exception e) {
// ...
}
Run Code Online (Sandbox Code Playgroud)
并删除其他方法:onError等.也许你的例子,如你所说,是另一个版本的SDK.
注意:我不使用Android Studio,但是在Eclipse中你有一个命令来自动创建所需的方法(空,提到'TODO').Android Studio中可能存在同样的情况吗?
| 归档时间: |
|
| 查看次数: |
27326 次 |
| 最近记录: |