我遇到错误没有找到Retrofit注释。 (参数#1)。我试图通过谷歌搜索但没有:
FragmentComment.java
private void createNew() {
subscriptions.add(leaderSubscription);
commentDTO.setType(Constants.TRAINING_DAY_OLD);
Observable<ResultResponse> observable = candidateRequest.postResultCandidate(commentDTO);
leaderSubscription = observable.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new JvSubscriber<ResultResponse>(activity) {
@Override
public void handleSuccess(ResultResponse baseResponse) {
if (Constants.SUCCESS.equals(baseResponse.getSuccess())) {
Intent intent = new Intent(getActivity(), TrainingActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
getActivity().startActivity(intent);
setEnableConfirm();
Toast.makeText(getActivity(), getString(R.string.success), Toast.LENGTH_SHORT).show();
} else {
btnConfirm.setText(R.string.title_enable);
btnConfirm.setBackgroundResource(R.drawable.custom_button_history);
btnConfirm.setEnabled(true);
Toast.makeText(getActivity(),baseResponse.getMessage(), Toast.LENGTH_SHORT).show();
}
Log.d(TAG, "JV-SUCCESS: ");
}
});
subscriptions.add(leaderSubscription);
CandidateRequest.java
public interface CandidateRequest {
@Headers("Content-Type: application/json")
@POST(Constants.URL_RESULT_CANDIDATE)
Observable<ResultResponse> postResultCandidate(
@Body CommentDTO commentDTO);
@GET(Constants.URL_STAFF_SCHEDULE_LIST)
Observable<StaffResponse> getSchedulesByStaffId(
@Path("id") long maidId,
@Path("fromDate") long fromDate,
@Path("toDate") long toDate);
@GET(Constants.URL_LEADER_NAME)
Observable<CandidateLeaderResponse> getLeaderName(
);
file build.gradle
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
}
}
申请插件:&#39; com.android.application&#39; apply plugin:&#39; android-apt&#39;
android {
compile 'com.android.support:appcompat-v7:23.4.0'
compile 'com.android.support:support-v4:23.0.2'
compile 'com.android.support:support-v13:23.0.0'
compile 'com.android.support:design:23.0.1'
compile 'com.jakewharton:butterknife:8.2.1'
apt 'com.jakewharton:butterknife-compiler:8.2.1'
compile 'com.squareup.retrofit:retrofit:1.7.1'
compile 'com.squareup.retrofit2:retrofit:2.1.0'
compile 'com.squareup.retrofit2:adapter-rxjava:2.0.2'
compile 'com.squareup.retrofit2:converter-gson:2.1.0'
compile 'com.squareup.okhttp:okhttp-urlconnection:2.0.0'
compile 'com.squareup.okhttp:okhttp:2.0.0'
compile 'com.squareup.okhttp3:logging-interceptor:3.3.1'
compile 'com.fasterxml.jackson.core:jackson-databind:2.4.+'
compile 'com.fasterxml.jackson.core:jackson-core:2.4.+'
compile 'com.fasterxml.jackson.core:jackson-annotations:2.4.+'
compile 'com.squareup:otto:1.3.5'
compile 'com.onesignal:OneSignal:3.+@aar'
compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.3'
compile 'com.android.support:appcompat-v7:23.4.0'
compile 'com.android.support:recyclerview-v7:23.2.0'
ext.googlePlayVersion = "9.6.1"
compile "com.google.firebase:firebase-ads:$googlePlayVersion"
compile "com.google.firebase:firebase-database:$googlePlayVersion"
compile "com.google.android.gms:play-services-ads:$googlePlayVersion"
compile "com.google.android.gms:play-services-maps:$googlePlayVersion"
compile "com.google.android.gms:play-services-gcm:$googlePlayVersion"
compile "com.google.android.gms:play-services-analytics:$googlePlayVersion"
compile "com.google.android.gms:play-services-location:$googlePlayVersion"
compile 'io.reactivex:rxandroid:1.2.1'
compile 'io.reactivex:rxjava:1.1.6'
}
答案 0 :(得分:1)
您正在使用Retrofit 1注释和Retrofit 2,反之亦然。版本1和2可以并排使用。这并不意味着他们的注释与其他版本兼容。
你的dependencies
街区一团糟。
删除Retrofit 1.仅在您自己的新代码中使用Retrofit 2。修复导入语句,从retrofit2.*
包中导入Retrofit注释。
删除OkHttp 2并显式添加OkHttp 3(Retrofit 2已经隐式添加了OkHttp 3.0,这还不够好)。只在您自己的新代码中使用OkHttp 3。
请勿使用不同版本的不同支持库。使用与Google Play服务相同的方法。将版本字符串提取到变量并使用它。您还指定了两次appcompat-v7。如果您不遵循此特定建议,则最终会出现运行时错误。
答案 1 :(得分:0)
您需要在app gradle依赖项中声明改造。
compile 'com.squareup.retrofit2:retrofit:2.1.0'
compile 'com.squareup.retrofit2:converter-gson:2.1.0'
像这样
答案 2 :(得分:0)
确保Constants.URL_STAFF_SCHEDULE_LIST包含您在getSchedulesByStaffId上声明的参数列表。可能你错过了{id}占位符。
也许最好还粘贴您的网址常量,以便我们提供更好的帮助