2017-10-12 59 views
-3

当我的设备网络连接,执行AsyncTask。 此AsyncTask获取公共IP。如何从android上的另一个类获取asynctask结果值?

的AsyncTask在MainActivity(内)

我想要的AsyncTask结果(结果值是公网IP)从另一个类值。

如何从另一个班级获得公共ip?

我的源

public class MainActivity extends Activity { 
    static getAsyncPubIp async = new getAsyncPubIp(); 

    public static final class getAsyncPubIp extends AsyncTask<Void, Void, String> { 
     String result; 
     TextView pubView; 

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

     @Override 
     protected String doInBackground(Void... params) { 
      try { 
       URL pub = new URL("get public ip domain"); 
       BufferedReader in = new BufferedReader(new InputStreamReader( 
         pub.openStream())); 

       String strPub = in.readLine(); 
       result = strPub; 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 

     @Override 
     protected void onPostExecute(String result) { 
      super.onPostExecute(result); 

      pubView = (TextView) activity.findViewById(R.id.ip); 
      pubView.setText(result); 

      async = null; 
      pubView = null; 
     } 
    }  

通常称之为的AsyncTask另一个类

MainActivity.getAsyncPubIp asyncPub = new MainActivity.getAsyncPubIp(); asyncPub.execute();

但我想从另一个类

唯一的AsyncTask结果值如何得到?

+3

的可能的复制[如何获得OnPostExecute的结果( )到主要活动,因为AsyncTask是一个单独的类?](https://stackoverflow.com/questions/12575068/how-to-get-the-result-of-onpostexecute-to-main-activity-because-asynctask-is -a) –

+0

您可以在As中访问其他类的对象使用单例的ync任务。 – Vasant

+0

通过界面你可以得到,在另一个类中定义一个接口并在你的MainActivity中实现该接口 – Yatish

回答

1

创建第二个活动的命名SecondClass.java Java类中的静态变量:

public static String public_ip; 
在MainActivity

然后:

@Override 
     protected void onPostExecute(String result) { 
      super.onPostExecute(result); 

      //Add this 
      SecondClass.public_ip = result; 

      pubView = (TextView) activity.findViewById(R.id.ip); 
      pubView.setText(result); 

      async = null; 
      pubView = null; 
     } 
相关问题