अद्यतन करने के लिए समस्याएं Fragments
की गतिशील सूची प्रदर्शित करने के लिए के साथ FragmentActivity
का उपयोग करने का प्रयास कर रहा हूं। इसके एक स्थिर संस्करण को कैसे करें इस पर बहुत सारे उदाहरण हैं। मेरी समस्या यह है कि जिस सूची को मैं प्रदर्शित करता हूं उसे गतिशील रूप से लोड करने की आवश्यकता होती है और उपयोगकर्ता इनपुट (जोड़ें/हटाएं) के आधार पर भी बदल सकती है। मैं अपनी सूची बनाने के लिए उपयोग किए जा सकने वाले डेटा के सेट को लोड करने के लिए अनुकूलित android.support.v4.content.Loader
का उपयोग करने का प्रयास कर रहा हूं। जब तक मैं बात करने के लिए मिलता हैएंड्रॉइड - FragmentActivity + लोडर का उपयोग FragmentStatePagerAdapter
सब कुछ मेरी सेटअप में ठीक हो जाता है जब मैं अनुकूलक का अद्यतन करें और FragmentStatePagerAdapter#notifyDataSetChanged()
कॉल और इस बिंदु पर इस कोड (FragmentStatePagerAdapter
से) निष्पादित किया जाता है
public void finishUpdate(View container)
{
if(mCurTransaction != null)
{
mCurTransaction.commit(); // BANG!!! The exception is thrown
mCurTransaction = null;
mFragmentManager.executePendingTransactions();
}
}
लेन-देन के लिए प्रतिबद्ध के साथ विफल जारी करने के लिए चाहते हैं इस संदेश:
java.lang.IllegalStateException: Can not perform this action inside of onLoadFinished
क्योंकि FragmentManagerImpl
के भीतर इस कोड निष्पादित होने
private void checkStateLoss() {
if (mStateSaved) {
throw new IllegalStateException(
"Can not perform this action after onSaveInstanceState");
}
if (mNoTransactionsBecause != null) {
throw new IllegalStateException(
"Can not perform this action inside of " + mNoTransactionsBecause);
}
}
ऐसा लगता है कि mNoTransactionsBecause
मान शून्य नहीं है और जब परिणाम मैं किसी भी तरह transaction.commitAllowingStateLoss()
लेकिन सब कुछ संबंधित करने के लिए tramsaction.commit()
बदलने का प्रयास कर विभिन्न चर देख रहा था onLoadFinished
को वापस लौटा दिया जाता है यह LoaderManagerImpl.LoaderInfo
में सेट किया गया है लेनदेन के लिए निजी या कम से कम पैकेज संरक्षित प्रतीत होता है।
क्या कोई मुझे सामान्य विचार दे सकता है अगर मैं ऐसा कर सकता हूं जो मुझे करना है (और कैसे)?
बस इतना ध्यान रखें कि मेरे कोड ठीक काम करता है, तो बजाय लोडर का उपयोग करने का मैं AsyncTask
में
आप एक लोडर के साथ ऐसा करना उचित तरीके से यह पता लगाने के लिए सक्षम गया है? मुझे एक ही समस्या का सामना करना पड़ रहा है। मैं 'banking.commitAllowingStateLoss()' का उपयोग करके इसे काम करने में सक्षम था, लेकिन यह जानना अच्छा होगा कि Google ने हमें क्या करना है ... ऐसा लगता है कि डेटा लोड करने के बाद एक खंड लेनदेन करने का कोई तरीका होना चाहिए लोडर का उपयोग करके ... – ashughes
मैंने आम तौर पर इसे छोड़ दिया और सीमित पूलिंग – Bostone
के साथ आधुनिक टास्कलोडर का उपयोग कर रहा हूं ModernTaskLoader क्या है? कहीं भी इसके बारे में कोई जानकारी नहीं मिली ... – ashughes