-1

in newInstance 나는 스레드를 생성 한 다음 외부 저장소에서 내부 저장소로 파일을 복사하고 처리하려고합니다. 그 후 나는 내 조각에 업데이트를 알리고 싶다. 내가 어떻게 할 수 있니?newInstance 함수의 스레드에서 내 조각을 업데이트하는 방법은 무엇입니까?

처음에는 context이 없으므로 안에 broadcast을 부를 수 없습니다.

초 : 아직 이므로 onCreate 메서드가 호출되지 않았으므로 runOnUiThread이 작동하지 않습니다.

public class PageFragment extends Fragment { 

    public static PageFragment newInstance(int pageNumber){ 

      Bundle args = new Bundle(); 
      args.putInt(EXTRA_PAGENUMBER, pageNumber); 
      PageFragment fragment = new PageFragment(); 
      fragment.setArguments(args); 

      new Thread(new Runnable() { 

       @Override 
       public void run() { 
       // call fragment to update 
      }).start(); 

      return fragment; 
    } 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

    } 
} 
+1

u newInstance 메서드에 대한 활동 참조를 전달합니까? –

+0

어디에서이 조각을 불러 왔습니까 ?? –

+0

@AvinashKumarPankaj에서 활동 중! – mmlooloo

답변

1

나는 당신은 단순히 PageFragment에서 당신이 당신의 활동의 참조거야

PageFragment fragment = PageFragment.newInstance(pageNumber, YourActivity.this); 

로 변경이

PageFragment fragment = PageFragment.newInstance(pageNumber); 

를 호출해야 조각을 호출 할 때 희망

public class PageFragment extends Fragment { 

    public static PageFragment newInstance(int pageNumber, Context ctx){ 

      Bundle args = new Bundle(); 
      args.putInt(EXTRA_PAGENUMBER, pageNumber); 
      PageFragment fragment = new PageFragment(); 
      fragment.setArguments(args); 

      final Context context = ctx; 

      new Thread(new Runnable() { 

       @Override 
       public void run() { 
       // use ctx here 
      }).start(); 

      return fragment; 
    } 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

    } 
} 
0

당신은에서 Activity 경우 onAttached() 콜백의 인스턴스를 취득해야합니다. FragmentonResume()이 호출 될 때까지 백그라운드 스레드를 시작하지 마십시오. 그 시간 전에 조각이 실행 상태에 있지 않습니다.

+0

나는 조각을위한 이미지를 제공 할 것이므로 가능한 한 빨리 내 스레드를 시작해야하므로 사용자가 기다리는 것을 원하지 않습니다. – mmlooloo

+0

활동에서 스레드 또는 로더를 시작하여 이미지 캐시와 그로부터 조각로드를 채울 수 있습니다. 캐시에 아직 이미지가로드되지 않은 경우로드를 시작하고 완료되면 조각을 알릴 수 있습니다. –

+0

'당신은 당신의 액티비티에서 이미지 캐시를 채우기 위해 쓰레드 나 로더를 시작할 수 있습니다. 이미지는 어떤 페이지 번호가 표시되는지 알지 못할 때로드 할 것입니다. – mmlooloo