2016-12-14 35 views
0

我已经在名为mylibrary的android studio库模块中定义了一个异步任务。我已将类getDeviceIP定义为mylibrary中的异步任务。我已将该库模块导入另一个项目testMyLibrary。当我尝试在testMyLibrary中调用主Actvitiy的异步方法时,出现无法解析符号execute()的错误。当我把类getDeviceIP放在与testMyLibrary相同的项目中时,它工作正常。但是,当方法存在于库中时,getDeviceIP被识别,但在getDeviceip.execute()中,​​方法不被识别。当库中定义的类不会执行异步任务

的在MyLibrary代码是:

package com.example.ramesh.mylibrary; 

import android.util.Log; 
import android.os.AsyncTask; 


public class getDeviceIP { 
    private String Url; 
    private Integer tos; 

    public getDeviceIP(String url, Integer typeOfService) { 
     Url = url; 
     tos = typeOfService; 
    } 
    protected String doInBackground(Void... params) { 
     //now call your ipify method which is doing the networking or calling a method that might be doing the networkign 

     //getContents("http://localhost:8080"); 
     String ip = ""; 

     if (tos == 1) { 

      ip = getipify(Url); 
      Log.i("Service = ", "Get IP address"); 

     } else { 
      Log.i("Service = ", "Not Defined"); 
      ip = ">>>>Not Defined<<<<"; 
     } 

     Log.i("ip after getipify call ",ip); 

     return ip; 
    } 

    private String getipify(String url) { 

     String IP=""; 

     try (java.util.Scanner s = new java.util.Scanner(new java.net.URL(url).openStream(), "UTF-8").useDelimiter("\\A")) { 
      IP = s.next(); 
      System.out.println("My current IP address is " + IP.toString()); 
      //IP = s.next(); 
     } catch (java.io.IOException e) { 
      System.out.println("======"); 
      System.out.println(e); 
      System.out.println("======"); 

     } 


     Log.i("Test","IP"); 

     return(IP); 
    } 

} 

主要活动是

public class MainActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     String myUrl = "https://api.ipify.org"; 
     String result = ""; 

     try { 
      result = new getDeviceIP(myUrl,1).execute().get(); 


     } catch (Exception e) { 

      System.out.println("Execution Excepton" + e); 
     } 
     Log.i("IP in main = ", result); 
    } 
} 

在线,**执行()**不被认可。

感谢您的帮助。

+0

getDeviceIP类应该扩展的AsyncTask –

回答

0

扩展getDeviceIP类为: -

public class getDeviceIP extends AsyncTask<String, String, String>{ 
     @Override 
     protected String doInBackground(String... strings) { 
      return null; 
     } 

     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 
     } 

     @Override 
     protected void onPostExecute(String s) { 
      super.onPostExecute(s); 
     } 
    } 
+0

咄!真是愚蠢的我。甚至没有将整个函数复制到库中,因此它在另一个项目中工作,但不在库中。非常感谢您的快速响应。 –