2017-10-12 7 views
-3

장치가 네트워크에 연결되면 AsyncTask를 실행하십시오. 이 AsyncTask는 공용 IP를 가져옵니다.android에서 다른 클래스의 asynctask 결과 값을 얻는 방법은 무엇입니까?

(내측)에 MainActivity

AsyncTask를 난 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; 
     } 
    }  

일반적으로 내 소스, 다른 클래스

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

에 AsyncTask를 호출하지만 난 어떻게를 얻기 위해 다른 클래스

에서만 AsyncTask를 결과 값을 원하는?

+3

가능한 복제 [(OnPostExecute의 결과를 얻는 방법 AsyncTask가 별도의 클래스이기 때문에 주 활동으로 이동합니까?] (https://stackoverflow.com/questions/12575068/how-to-get-the-result-of-onpostexecute-to-main-activity-because-asynctask-is -a) –

+0

다른 클래스의 오브젝트에 액세스 할 수 있습니다. 싱글 톤을 사용하는 ync 작업. – Vasant

+0

인터페이스를 통해 다른 클래스의 인터페이스를 정의하고 MainActivity – Yatish

답변

1

것은 SecondClass.java라는 이름의 두 번째 활동의 자바 클래스의 정적 변수를 만듭니다

당신의 MainActivity에서 다음
public static String public_ip; 

:

@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; 
     } 
관련 문제