Я пытаюсь позвонить 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);
}
}
Изображение ошибки:
где вы звоните 'новый ServiceCal'? – Blackbelt
в loginclass ServiceCalls serviceCalls = new ServiceCalls (это, «ks»); serviceCalls.execute (requestParams); – Lav
сделал, как вы сказали, но дает ошибку, поскольку OnDataListener не может быть применен к android.content.Context в классе ServiceCalls. – Lav