2016-01-06 4 views
-6

Я пытаюсь позвонить AsyncRemoteCall из моего класса входа, пропуская контекст, но он говорил, чтоошибка: несовместимые типы Login_screen не могут быть преобразованы в onDataListener

ServiceCalls(this, "ks") is cannot be applied

. Login_screen:

public class Login_screen extends BaseActivity implements View.OnClickListener { 

    Button submit; 
    EditText email,password; 
    CheckBox showpassword; 


    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 

     //full screen 
     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 
     setContentView(R.layout.login); 

     email= (EditText) findViewById(R.id.email); 
     password= (EditText) findViewById(R.id.password); 
     showpassword= (CheckBox) findViewById(R.id.showpassword); 
     submit= (Button) findViewById(R.id.submit); 
     showpassword.setOnClickListener(this); 
     submit.setOnClickListener(this); 
    } 

    @Override 
    public void onClick(View v) { 
     switch(v.getId()) 
     { 
      case R.id.showpassword : 
       if(showpassword.isChecked()) 
       { 
        password.setInputType(InputType.TYPE_CLASS_TEXT); 
       } 
       else 
       { 
        password.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD); 
       } 
       break; 
      case R.id.submit: 
       final List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); 
       nameValuePairs.add(new BasicNameValuePair("email", email.getText().toString())); 

       final String loginUrl = new AllUrls().mainhost+ "login?"; 
       doLogin(); 
       //showAlert(email.getText().toString()); 
       break; 
     } 
    } 

    private LoginDO parseData(String strResponce) { 

     LoginDO ld = null; 
     try { 

      JSONObject jo = new JSONObject(strResponce); 

      ld = new LoginDO(); 
      if ((jo.getString("status")).equalsIgnoreCase("Fail")) { 
       // for error code 
       ld.errormsg = jo.getString("msg"); 
      } else if ((jo.getString("status")).equalsIgnoreCase("Success")) { 
       // success code 
       ld.email = jo.getString("email"); 
       ld.errormsg = null; 
       ld.username = jo.getString("username"); 
       ld.userid = jo.getString("userid"); 
       ld.password = password.getText().toString(); 
      } 
     } catch (JSONException je) { 
      je.printStackTrace(); 
     } 

     return ld; 
    } 

    private LoginDO parseData(JSONObject jo) { 

     LoginDO ld = null; 
     try { 

      // JSONObject jo = new JSONObject(strResponce); 

      ld = new LoginDO(); 
      if ((jo.getString("status")).equalsIgnoreCase("Fail")) { 
       // for error code 
       ld.errormsg = jo.getString("msg"); 
      } else if ((jo.getString("status")).equalsIgnoreCase("Success")) { 
       // success code 
       ld.email = jo.getString("email"); 
       ld.errormsg = null; 
       ld.username = jo.getString("username"); 
       ld.userid = jo.getString("userid"); 
       ld.password = password.getText().toString(); 
      } 
     } catch (JSONException je) { 
      je.printStackTrace(); 
     } 

     return ld; 
    } 

    public void doLogin() { 

     showLoader(); 

     RequestParams requestParams = new RequestParams(); 
     requestParams.url = AllUrls.mainhost + "login?"; 
     ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); 

     nameValuePairs.add(new BasicNameValuePair("email",email.getText().toString())); 
     //nameValuePairs.add(new BasicNameValuePair("password", etPswd.getText().toString())); 
     //nameValuePairs.add(new BasicNameValuePair("dtype", "android")); 
     requestParams.data = nameValuePairs; 
     requestParams.typeOfRequest = AsyncRemoteCall.POST_REQUEST_DATA; 
     //showAlert(requestParams.toString()); 
     ServiceCalls serviceCalls = new ServiceCalls(this,"ks"); 
     serviceCalls.execute(requestParams); 
    } 
} 

ServiceCalls класс:

public class ServiceCalls extends AsyncRemoteCall{ 

    private String tag; 

    private ArrayList<Object> data; 


    public ServiceCalls(OnDataListener context, String tag) { 
     super(context); 

     this.tag = tag; 
     data =null; 
    } 

    public ServiceCalls(OnDataListener context, String tag, String option) { 
     super(context); 

     this.tag = tag; 
     data =null; 
    } 


    @Override 
    protected void onPostExecute(ResponseData result) { 
     // TODO Auto-generated method stub 
     Log.e("Resonse******", result.toString()); 

     if(result.error == null){ 

      parse(result); 

     }else{ 

      mDataListener.onData(null, result.error);   
     } 
     super.onPostExecute(result); 
    } 

    public void parse(ResponseData result){ 


     data = new ArrayList<Object>(); 

     try { 

      if(tag.equalsIgnoreCase("login")){ 

       Log.e("datadata",""+result.data); 
       String str = result.data; 

       mDataListener.onData(str, null); 
      } 
      else if(tag.equalsIgnoreCase("myAccount")) 
      { 
       JSONObject obj = new JSONObject(result.data); 
       AccountDetilsDO ad = new AccountDetilsDO(); 

       if((obj.getString("status")).equalsIgnoreCase("Fail")){ 

        ad.error = obj.getString("msg"); 

       }else if((obj.getString("status")).equalsIgnoreCase("success")){ 

        ad.error = null; 
        ad.usedspace = obj.getString("usedspace"); 
        ad.nooffiles = obj.getString("nooffiles"); 
        ad.accountcreatedon = obj.getString("accountcreatedon"); 
        ad.name = obj.getString("name"); 
       } 

       mDataListener.onData(ad, null); 
      } 

     } catch (Exception e) { 
      e.printStackTrace(); 
      result.error = "Unable to connect server, please try again later"; 
      mDataListener.onData(null, result.error); 
//   mDataListener.onData(null, result.toString()); 

     } 

//  mDataListener.onData(null, result.error); 
     data = null; 
    } 
} 

AsyncRemoteCall:

public class AsyncRemoteCall extends AsyncTask<RequestParams, Void, ResponseData> { 

    public static final int GET_REQUEST = 0; 
    public static final int POST_REQUEST_XML = 1; 
    public static final int POST_REQUEST_DATA = 2; 
    public static final int PUT_REQUEST = 3; 
    public final int CONNECTION_TIMEOUT = 30*1000; 
    public final int SO_TIMEOUT = 30*1000; 
    OnDataListener mDataListener; 

    public AsyncRemoteCall() { 
    } 

    public AsyncRemoteCall(OnDataListener context) { 
     mDataListener = context; 
    } 

    @Override 
    protected ResponseData doInBackground(RequestParams... params) { 
     // TODO Auto-generated method stub 

     RequestParams requestParams = params[0]; 
     Log.e("Request", requestParams.toString()); 
     if(requestParams.typeOfRequest == GET_REQUEST){ 
      return getData(requestParams.url); 
     }else if (requestParams.typeOfRequest == POST_REQUEST_XML) { 
      return postData((String) requestParams.data, requestParams.url); 
     }else if (requestParams.typeOfRequest == POST_REQUEST_DATA) { 
      return postRequest(requestParams.data, requestParams.url); 
     }else if(requestParams.typeOfRequest == PUT_REQUEST){ 
      return postData((String) requestParams.data, requestParams.url); 
     } 

     return null; 
    } 


    public ResponseData getData(String url) { 

     ResponseData response = new ResponseData(); 

     try { 

      HttpGet httpGet = new HttpGet(url); 

      HttpClient httpClient = new DefaultHttpClient(); 
      httpClient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, CONNECTION_TIMEOUT); 
      httpClient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, SO_TIMEOUT); 
      BasicHttpResponse httpResponse = (BasicHttpResponse) httpClient.execute(httpGet); 

      int responseCode = httpResponse.getStatusLine().getStatusCode(); 
      StringBuilder data = new StringBuilder(); 

      if (responseCode == 200) { 
       InputStream in = httpResponse.getEntity().getContent(); 
       InputStreamReader is = new InputStreamReader(in,"utf-8"); 

       // 
//    BufferedReader br = new BufferedReader(is); 
       BufferedReader br = new BufferedReader(is,8); 
       String read = br.readLine(); 

       while (read != null) { 
        // System.out.println(read); 
        data.append(read); 
        read = br.readLine(); 

       } 
       response.data = data.toString(); 

      } else { 

       response.error = Utils.SERVER_ERROR; 
//    response.error = httpResponse.getStatusLine().toString(); 
      } 

     } catch (UnsupportedEncodingException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
      response.error = Utils.SERVER_ERROR; 
     } catch (ClientProtocolException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
      response.error = Utils.SERVER_ERROR; 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
      response.error = Utils.SERVER_ERROR; 
     } 

     return response; 
    } 

    public ResponseData postData(String param, String url) { 

     ResponseData response = new ResponseData(); 

     try { 

      HttpPost httpPost = new HttpPost(url); 
      Log.e("url", url); 
      StringEntity content = new StringEntity(param, HTTP.UTF_8); 
      content.setContentType("text/xml"); 
      httpPost.setHeader("Content-Type", "application/xml"); 
      httpPost.setEntity(content); 

      HttpClient httpClient = new DefaultHttpClient(); 
      httpClient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, CONNECTION_TIMEOUT); 
      httpClient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, SO_TIMEOUT); 
      BasicHttpResponse httpResponse = (BasicHttpResponse) httpClient.execute(httpPost); 

      int responseCode = httpResponse.getStatusLine().getStatusCode(); 
      StringBuilder data = new StringBuilder(); 

      if (responseCode == 200) { 
       InputStream in = httpResponse.getEntity().getContent(); 
       InputStreamReader is = new InputStreamReader(in); 
       BufferedReader br = new BufferedReader(is); 
       String read = br.readLine(); 

       while (read != null) { 
        // System.out.println(read); 
        data.append(read); 
        read = br.readLine(); 

       } 
       response.data = data.toString(); 
      } else { 

       response.error = Utils.SERVER_ERROR; 
//    response.error = httpResponse.getStatusLine().toString(); 
      } 

     } catch (UnsupportedEncodingException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
      response.error = Utils.SERVER_ERROR; 
     } catch (ClientProtocolException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
      response.error = Utils.SERVER_ERROR; 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
      response.error = Utils.SERVER_ERROR; 
     } 

     return response; 
    } 


    public ResponseData postRequest(Object param, String url){ 


     ArrayList<NameValuePair> params = (ArrayList<NameValuePair>) param; 
     ResponseData response = new ResponseData(); 

     try { 

      HttpPost httpPost = new HttpPost(url); 
      Log.e("url", url); 

      if(params != null) 
       httpPost.setEntity(new UrlEncodedFormEntity(params)); 

      HttpClient httpClient = new DefaultHttpClient(); 
      httpClient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, CONNECTION_TIMEOUT); 
      httpClient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, SO_TIMEOUT); 
      BasicHttpResponse httpResponse = (BasicHttpResponse) httpClient.execute(httpPost); 

      int responseCode = httpResponse.getStatusLine().getStatusCode(); 
      StringBuilder data = new StringBuilder(); 

      if (responseCode == 200) { 
       Log.e("url 200", url); 

       InputStream in = httpResponse.getEntity().getContent(); 
       InputStreamReader is = new InputStreamReader(in); 
       BufferedReader br = new BufferedReader(is); 
       String read = br.readLine(); 

       while (read != null) { 
        // System.out.println(read); 
        data.append(read); 
        read = br.readLine(); 

       } 
       response.data = data.toString(); 
//    Log.e("", "data.toString() "+data.toString()); 


      } else { 

       Log.e("url error", url); 

       response.error = Utils.SERVER_ERROR; 
//    response.error = httpResponse.getStatusLine().toString(); 
      } 

     } catch (UnsupportedEncodingException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
      response.error = Utils.SERVER_ERROR; 
     } catch (ClientProtocolException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
      response.error = Utils.SERVER_ERROR; 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
      response.error = Utils.SERVER_ERROR; 
     } 

     return response; 
    } 

    public ResponseData putData(String param, String url) { 

     ResponseData response = new ResponseData(); 

     try { 
      HttpPut httpput = new HttpPut(url); 
      Log.e("url", url); 
      StringEntity content = new StringEntity(param, HTTP.UTF_8); 
      content.setContentType("text/xml"); 
      httpput.setHeader("Content-Type", "application/xml"); 
      httpput.setEntity(content); 

      HttpClient httpClient = new DefaultHttpClient(); 
      httpClient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, CONNECTION_TIMEOUT); 
      httpClient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, SO_TIMEOUT); 
      BasicHttpResponse httpResponse = (BasicHttpResponse) httpClient.execute(httpput); 
      int responseCode = httpResponse.getStatusLine().getStatusCode(); 
      StringBuilder data = new StringBuilder(); 

      if (responseCode == 200) { 
       InputStream in = httpResponse.getEntity().getContent(); 
       InputStreamReader is = new InputStreamReader(in); 
       BufferedReader br = new BufferedReader(is); 
       String read = br.readLine(); 

       while (read != null) { 
        // System.out.println(read); 
        data.append(read); 
        read = br.readLine(); 

       } 
       response.data = data.toString(); 

      } else { 

       response.error = Utils.SERVER_ERROR; 
//    response.error = httpResponse.getStatusLine().toString(); 
      } 

     } catch (UnsupportedEncodingException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
      response.error = Utils.SERVER_ERROR; 
     } catch (ClientProtocolException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
      response.error = Utils.SERVER_ERROR; 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
      response.error = Utils.SERVER_ERROR; 
     } 

     return response; 
    } 

    public interface OnDataListener { 
     void onData(Object data, String error); 
    } 
} 

Изображение ошибки:

image of the error

+0

где вы звоните 'новый ServiceCal'? – Blackbelt

+0

в loginclass ServiceCalls serviceCalls = new ServiceCalls (это, «ks»); serviceCalls.execute (requestParams); – Lav

+0

сделал, как вы сказали, но дает ошибку, поскольку OnDataListener не может быть применен к android.content.Context в классе ServiceCalls. – Lav

ответ

0

Изменить Login_screen также реализовать AsyncRemoteCall.OnDataListener

public class Login_screen extends BaseActivity implements View.OnClickListener, AsyncRemoteCall.OnDataListener { 

    // onData 
    @Override 
    public void onData(Object data, String error) { 
     if (TextUtils.isEmpty(error) && data != null){ 
      // use data here 
     } else { 
      // display error here 
     } 
    } 
} 
+0

спасибо ..solved мой проблема. – Lav

+0

@ Lav great ... plz принять ответ – petey

Смежные вопросы