改造1.9方法错误?

时间:2015-12-08 05:14:28

标签: android login retrofit

我试图使用稳定的改造1.9制作登录页面,但当我试图运行它时,它抛出方法错误到目前为止我尝试的是

这是我的主要活动:

package first.service.precision.servicefirst;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;

import retrofit.Callback;
import retrofit.GsonConverterFactory;
import retrofit.Response;
import retrofit.Retrofit;

public class MainActivity extends Activity
{
    public EditText password,userName;
    Button login,resister;
    ProgressBar progressbar;
    TextView tv;
    String TAG="Fails";
    String url="http://172.16.7.203/sfAppServices/SF_UserLogin.svc";
    private ModelLogin Result;



    protected void onCreate(final Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        password=(EditText) findViewById(R.id.password);

        userName=(EditText) findViewById(R.id.txtEmployeeCode);

        login=(Button) findViewById(R.id.btnsignin);
        userName.setBackgroundResource(R.drawable.colorfoucs);


        //progess_msz.setVisibility(View.GONE);
        ConnectivityManager cn=(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo nf=cn.getActiveNetworkInfo();
        if(nf != null && nf.isConnected()==true )
        {
            Toast.makeText(this, "Network Available", Toast.LENGTH_LONG).show();

        } else {
            showAlertDialog(MainActivity.this,"No Network","Please Check Your Network Connectivity",true);
        }

        final   ConnectionDetector    cd = new ConnectionDetector(getApplicationContext());

        login.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                progressbar = (ProgressBar) findViewById(R.id.progressBar);
                progressbar.setVisibility(View.VISIBLE);
                final String s1 = userName.getText().toString();
                String s2 = password.getText().toString();
                if (s1.equals("")) {
                    userName.setError("Enter Employee Code");
                }
                if (s2.equals("")) {
                    password.setError("Enter Password");

                }

                Retrofit retro = new Retrofit.Builder().baseUrl(url).addConverterFactory(GsonConverterFactory.create()).build();
                RetrofitRest retrofitRest = retro.create(RetrofitRest.class);
                retrofitRest.getResult(s1, s2, new Callback<ModelLogin>() {
                    @Override
                    public void onResponse(Response<ModelLogin> response, Retrofit retrofit) {
                        if(response.isSuccess()){
                            Intent intent = new Intent(getApplicationContext(), Main2Activity.class);
                            startActivity(intent);
                            Toast.makeText(MainActivity.this, "Welcome" +""+s1, Toast.LENGTH_SHORT).show();
                        }
                    }

                    @Override
                    public void onFailure(Throwable t) {

                    }
                });


                        // public void onResponse(ModelLogin modelLogin, Retrofit retrofit)
                        // {


                        // }

                        // @Override
                        // public void onResponse(Response<ModelLogin> response, Retrofit retrofit) {
                        //   progressbar.setVisibility(View.INVISIBLE);
                        //    ModelLogin modelLogin1=new ModelLogin();
                        //    modelLogin1.getLoginResult();
                        //   LoginResult loginResult=new LoginResult();
                        ///   loginResult.getResult();
                        //   ModelLogin modelLogin=new ModelLogin();
                        // modelLogin.getLoginResult().getResult();
                        //   if()
                        //   {

                        //      Toast.makeText(getApplicationContext(),"God",Toast.LENGTH_LONG).show();

                        //  }
                        // else {
                        //      Intent intent=new Intent(getApplicationContext(),Main2Activity.class);
                        //       startActivity(intent);
                        //  }
                        //  }
//
                        //  @Override
                        //   public void onResponse(Response<LoginResult> response, Retrofit retrofit) {

                        //   }

                        ////   @Override
                        //   public void onFailure(Throwable t) {
                        //      Toast.makeText(getApplicationContext(),"God",Toast.LENGTH_LONG).show();
                        //   }
                    }
                    //  call.enqueue(new Callback<ModelLogin>() {
                    //     @Override
                    //     public void onResponse(Response<ModelLogin> response, Retrofit retrofit) {


                    //        }


                    //    @Override
                    //    public void onFailure(Throwable t) {
                    //       Log.d(TAG,"Error");
                    //   }
                    //});





        });

    }


    public void showAlertDialog(Context context, String title, String message, Boolean status) {
        AlertDialog alertDialog = new AlertDialog.Builder(context).create();

        // Setting Dialog Title
        alertDialog.setTitle(title);

        // Setting Dialog Message
        alertDialog.setMessage(message);

        // Setting alert dialog icon


        // Setting OK Button
        alertDialog.setButton("OK", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
            }
        });

        // Showing Alert Message
        alertDialog.show();
    }
    @Override
    public void onBackPressed() {
        new AlertDialog.Builder(this)
                .setIcon(android.R.drawable.ic_dialog_alert)
                .setTitle("Exit")
                .setMessage("Are you sure you want to close this application?")
                .setPositiveButton("Yes", new DialogInterface.OnClickListener()
                {
                    @Override
                    public void onClick(DialogInterface dialog, int d) {
                        finish();
                    }

                })
                .setNegativeButton("No", null)
                .show();
    }
}

这是我的界面:

package first.service.precision.servicefirst;

/**
 * Created by 4264 on 23-11-2015.
 */
import retrofit.Callback;
import retrofit.http.POST;
import retrofit.http.Path;

/**
 * Created by 4264 on 03-11-2015.
 */
public interface RetrofitRest {

    @POST("SF_UserLogin.svc/rest/login/{EMPLOYEECODE}/{PASSWORD}")
ModelLogin getResult(@Path("EMPLOYEECODE") String empcode, @Path("PASSWORD") String passwrd, Callback<ModelLogin> callback);



    // @GET("SF_UserLogin.svc/rest/Msg")
    // Call<ModelLogin>verify(@Body ModelLogin result);
}

这是我的pojo:

package first.service.precision.servicefirst;

/**
 * Created by 4264 on 23-11-2015.
 */
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;

/**
 * Created by 4264 on 13-11-2015.
 */
public  class ModelLogin
{

    @SerializedName("Result")

    private String Result;
    @SerializedName("UserID")
    @Expose
    private Integer UserID;
    @SerializedName("ModuleID")
    @Expose
    private Integer ModuleID;
    @SerializedName("ModuleName")
    @Expose
    private String ModuleName;

    /**
     *
     * @return
     * The Result
     */
    public String getResult() {
        return Result;
    }

    /**
     *
     * @param Result
     * The Result
     */
    public void setResult(String Result) {
        this.Result = Result;
    }

    /**
     *
     * @return
     * The UserID
     */
    public Integer getUserID() {
        return UserID;
    }

    /**
     *
     * @param UserID
     * The UserID
     */
    public void setUserID(Integer UserID) {
        this.UserID = UserID;
    }

    /**
     *
     * @return
     * The ModuleID
     */
    public Integer getModuleID() {
        return ModuleID;
    }

    /**
     *
     * @param ModuleID
     * The ModuleID
     */
    public void setModuleID(Integer ModuleID) {
        this.ModuleID = ModuleID;
    }

    /**
     *
     * @return
     * The ModuleName
     */
    public String getModuleName() {
        return ModuleName;
    }

    /**
     *
     * @param ModuleName
     * The ModuleName
     */
    public void setModuleName(String ModuleName) {
        this.ModuleName = ModuleName;
    }

}

这是我的构建gradle:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.1"

    defaultConfig {
        applicationId "first.service.precision.servicefirst"
        minSdkVersion 15
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        debug{
            debuggable true
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard-rules.pro'
        }

    }

    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        compile 'com.android.support:appcompat-v7:23.0.1'
        compile 'com.squareup.retrofit:retrofit:1.9.0'

        compile 'com.squareup.okhttp:okhttp:2.4.0'
        compile 'com.squareup.retrofit:converter-gson:2.0.0-beta2'
        compile 'org.parceler:parceler:0.2.13'
        compile 'com.squareup:otto:1.3.8'
    }
}

我的logcat错误消息:

2-08 10:27:58.602  11156-11156/first.service.precision.servicefirst E/AndroidRuntime﹕ FATAL EXCEPTION: main
    java.lang.IllegalArgumentException: Unable to create call adapter for class first.service.precision.servicefirst.ModelLogin
    for method RetrofitRest.getResult
            at retrofit.Utils.methodError(Utils.java:177)
            at retrofit.MethodHandler.createCallAdapter(MethodHandler.java:47)
            at retrofit.MethodHandler.create(MethodHandler.java:26)
            at retrofit.Retrofit.loadMethodHandler(Retrofit.java:151)
            at retrofit.Retrofit$1.invoke(Retrofit.java:132)
            at $Proxy0.getResult(Native Method)
            at first.service.precision.servicefirst.MainActivity$1.onClick(MainActivity.java:76)
            at android.view.View.performClick(View.java:4275)
            at android.view.View$PerformClick.run(View.java:17434)
            at android.os.Handler.handleCallback(Handler.java:615)
            at android.os.Handler.dispatchMessage(Handler.java:92)
            at android.os.Looper.loop(Looper.java:177)
            at android.app.ActivityThread.main(ActivityThread.java:4947)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.IllegalArgumentException: Could not locate call adapter for class first.service.precision.servicefirst.ModelLogin. Tried:
    * retrofit.ExecutorCallAdapterFactory
            at retrofit.Retrofit.nextCallAdapter(Retrofit.java:207)
            at retrofit.Retrofit.callAdapter(Retrofit.java:175)
            at retrofit.MethodHandler.createCallAdapter(MethodHandler.java:45)
            ... 16 more

我在做错误的地方真的很困惑我正在以正确的方式做这件事需要传递编辑文本值并且需要在onclick事件中获得json响应有人可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

如果您使用的是异步调用,则返回类型应为无效。

@POST("SF_UserLogin.svc/rest/login/{EMPLOYEECODE}/{PASSWORD}")
void getResult(@Path("EMPLOYEECODE") String empcode, @Path("PASSWORD") String passwrd, Callback<ModelLogin> callback);