progress-bar 단편을 숨긴 다음 progress-bar 단편을 표시하고 새 단편에 데이터를로드 한 다음 표시합니다.AsyncTask, progress 및 fragments
악명 높은 onPostExecute()/configuration-change 문제가 발생했으며 가능한 해결책에 대한 수많은 게시물을 읽은 후 onPostExecute()에서 전환 단편을 다루지 않는 것으로 나타났습니다. 잠재적으로 위험 할 수도 있습니다. 활동이 상태를 저장 한 후에 조각 트랜잭션을 커밋하려고 시도하는 동안 IllegalStateException을 throw합니다. 관련 코드의 조각이다
: 단지 진행 상황을 복잡하게,하지만 난 정말 조각에 충실하고 싶어 보여 단편있는 것은 내가 생각하기 시작 했어
public class MyActivity extends FragmentActivity implements {
class LoadListTask extends AsyncTask<Void, Void, MyListItem> {
@Override
protected void onPreExecute() {
showProgressBar();
}
@Override
protected Response doInBackground(Void... params) {
//
// ... web call
//
return new List<MyListItem>;
}
protected void onPostExecute(List<MyListItem> result) {
if (result != null) {
hideProgressBar();
showList(result);
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(...);
new LoadListTask().execute(session);
}
public void showProgressBar() {
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager
.beginTransaction();
fragmentTransaction.replace(R.id.placeholder,
mProgressBarFragment).commit();
fragmentManager.executePendingTransactions();
}
private void hideProgressBar() {
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager
.beginTransaction();
fragmentTransaction.remove(mProgressBarFragment)
.commit();
fragmentManager.executePendingTransactions();
}
private void showList(List<ListItem> list) {
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager
.beginTransaction();
Fragment frg = FacebookFriendPickerFragment
.newInstance(friendsArrObj);
fragmentTransaction.replace(R.id.friendPickerPlaceholder, frg)
.commit();
fragmentManager.executePendingTransactions();
}
}
을하는 것이 - 그래서 어떤 방법이 조각 생명주기의 합리적인 단계에서 일어날 수 있도록 조각 트랜잭션을 "동기화"하고 AsyncTask/config-change 문제를 피할 수 있습니까?
감사합니다.이 게시물도 읽었으며 문제가 처음 나타 났을 때 setRetainInstance (true)를 시도했지만 예상대로 조각 자체 만 제어합니다. 문제는 onPostExecute에서 조각을 전환해야한다는 것입니다.(), 파편이 파괴되는 것은 아닙니다. –
당신은 이것을 썼습니다 - "구성 변경 문제 ..."나는 당신이이 게시물을 읽으면 몇 가지 해결책을 찾을 수 있기를 바랐다 ... 미안하지만 나는 다른 생각이 없다. –