Tôi đang tạo một ứng dụng mẫu Android mới với một hoạt động và nhiều đoạn.Không thể thực hiện tác vụ này bên trong onLoadFinished
Lúc đầu, tôi bắt đầu "OverviewFragment" (Trang tổng quan của tôi) sẽ hiển thị một số thông tin cơ bản. Tổng quan của tôiFragment tải thông tin với một "AccountProvider" (ContentProvider). Nếu cơ sở dữ liệu là trống rỗng, các OverviewFragment nên thay thế bằng WelcomeFragment tôi ...
Dưới đây là một số mã:
public class OverviewFragment extends BaseFragment
implements LoaderManager.LoaderCallbacks {
private static final int LOADER_ACCOUNTS = 10;
private static final int LOADER_TRANSACTIONS = 20;
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
getLoaderManager().initLoader(LOADER_ACCOUNTS, null, this);
//getLoaderManager().initLoader(LOADER_TRANSACTIONS, null, this);
}
@Override
public Loader onCreateLoader(int id, Bundle args) {
Uri uri = null;
String[] projection = null;
String selection = null;
String[] selectionArgs = null;
String sortOrder = null;
switch (id) {
case LOADER_ACCOUNTS:
uri = WalletProvider.CONTENT_URI;
projection = new String[]{DBHelper.ACC_ID, DBHelper.ACC_TITLE};
sortOrder = DBHelper.ACC_TITLE;
break;
}
CursorLoader cl = new CursorLoader(getActivity(),
uri, projection, selection, selectionArgs, sortOrder);
return cl;
}
@Override
public void onLoadFinished(Loader loader, Object data) {
switch (loader.getId()) {
case LOADER_ACCOUNTS:
bindAccounts((Cursor) data);
break;
}
}
@Override
public void onLoaderReset(Loader loader) {
}
private void bindAccounts(Cursor cursor) {
boolean showCreateWallet = true;
if (cursor != null && cursor.moveToFirst()) {
showCreateWallet = false;
}
if (showCreateWallet) {
listener.changeFragment(new WalletCreateFragment());
}
}
và đây hoạt động chính của tôi
@Override
public void changeFragment(Fragment fragmentToLoad) {
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.container, fragmentToLoad)
.commit();
}
Bây giờ ... nếu Tôi đang bắt đầu ứng dụng của mình với một cơ sở dữ liệu trống, tôi gặp lỗi bạn thấy trong tiêu đề ..
Tôi biết rằng tôi không nên thay đổi đoạn trong hàm onLoadFinished .... nhưng tôi có thể làm gì nó? : P
Xin lỗi vì tiếng anh của tôi =)
thể trùng lặp của [Android - vấn đề sử dụng FragmentActivity + Loader để cập nhật FragmentStatePagerAdapter] (http://stackoverflow.com/questions/7746140/android-problems-using-fragmentactivity-loader-to-update-fragmentstatepagera) – rds