2013-06-05 2 views
0

우선, 내 프로젝트에 대한 일부 정보는 다음과 같습니다.asynctask에서 단편으로 결과를 반환하십시오.

여러 개의 조각으로 구성된 응용 프로그램이 있습니다. (나는 FragmentActivity를 확장하는 하나의 클래스와 FragmentPagerAdapter를 확장하는 또 다른 클래스를가집니다.) 그래서 실제로 코드가 Fragments 내부에서 실행 중입니다.

나는 몇 가지 계산을 수행 할 조각 중 하나 내부에 AsyncTask를 부른다. asyncTask는 별도의 파일이며 클래스가 Fragment 클래스 내에 있지 않습니다.

그래서 한 파일은 AsyncTask를하고 fragmet 다른 하나 (조각에서 변수는 AsyncTask를하여 직접 액세스 할 수 없습니다가!).

I는해서 ProgressDialog를 AsyncTask를 사용하여 결과를 표시 할 수있다. 그러나 나는 (asynctask의 결과) 데이터를 내 조각에있는 변수로 되돌릴 수 있기를 원합니다. 내가 지금까지 시도한 것은 :

내가 호출 된 다음 코드를 사용 : asyncatask.execute에서 GET을()()를 사용하여

내가 이런 식으로 그것을 시도 버튼 클릭 후.

mytask1 = new myAsyncTask(this); 
     String result =mytask1.execute(value1).get(); 

그러나 주 스레드가 멈추고 asynctask가 완료 될 때까지 기다리는 결과가 발생합니다.

2.Using loginSharePreferens

loginPreferences = getActivity().getSharedPreferences("loginPrefs", Context.MODE_PRIVATE); 
      loginPrefsEditor = loginPreferences.edit(); 
      loginPrefsEditor.putString("result", result); 
      loginPrefsEditor.commit(); 

이 나에게 오류를했다.

3.I도 2에있어서와 마찬가지로 되었음
SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());

시도.

4.I는 값을 설정하는 것입니다 내 조각의 방법을 만들려고하지 나는 조각

MyFrragment1.this.setRestult(1); // is called in the onPostExecute of the asyncTask 

public void setRestult(int result){ 
     this.test1=result; ///inside of the fragment 
    } 

이 내부를 호출하려고 나에게 오류를 준 : "유형의 MyFragment1의 어떤 둘러싸는 인스턴스를 내가 시도하는 다른 모르는

"범위에 액세스 할 수 있습니다. 어떤 아이디어?

+0

http://stackoverflow.com/questions/16627492/how-to-return-an-object-to-the-fragment-from-a-nested- static-asynctask/비슷한 질문 – Raghunandan

+0

@Raghunandan 당신이 저에게 준 링크가 다른 방향으로 돌아가고 있다고 생각합니다. 나는 또한 나의 조각 –

+0

에 다시 AsyncTask를의 결과를 검색 할, 내 상황이 다르다, 나는 조각 내부 AsyncTask를하지만, 별도의 –

답변

6

당신은 UI 스레드에서 실행 doInBackground이 완료된 후 호출되는 onPostExecute 방법을 사용할 수 있습니다. 이처럼 Fragment에서 재정의 할 수 있습니다

new myAsyncTask() { 

     @Override 
     protected void onPostExecute(Result result) { 

      super.onPostExecute(result); 
      // Do something with result here 
     } 
    }.execute(value1); 
+0

당신을 감사하지 않은 !!!! 그것은 작동합니다! :) –

+0

당신, 시간과 시간을 구해 주셨습니다! 정말 고맙습니다)) – Sermilion

관련 문제