नहीं कहा जाता है, मैं यहां प्रश्न पोस्ट करने के लिए बिल्कुल नया हूं, हालांकि मैं यहां वर्षों से बहुत कुछ पढ़ रहा हूं। आम तौर पर मैं हमेशा वेब पर पूरी तरह से खोज करके अपने उत्तरों को ढूंढने में सक्षम हूं, लेकिन इस बार मुझे नुकसान हुआ है ...एंड्रॉइड: पार्ससेलबल .writeToParcel और Parcelable.Creator.createFromParcel को कभी भी
यह जानने का प्रयास करने के एक और दिन बिताए जाने के बाद कि यह क्यों काम नहीं कर रहा है मैंने पूछा मदद के लिए, उम्मीद है कि आप मुझे कुछ पॉइंटर्स, या बेहतर, एक समाधान दे सकते हैं।
समस्या: एक एंड्रॉइड गेम में मैं उस बिंदु पर आया हूं जहां मुझे एप्लिकेशन को अपने राज्य को याद रखना होगा जब उपयोगकर्ता होम-स्क्रीन बटन दबाता है। कुछ खोजों के बाद मुझे एहसास हुआ कि आवेदन को दोबारा खोलने के बाद मेरी कक्षाएं अपने उचित राज्यों में वापस शुरू करने के लिए मुझे बंडल के साथ पारित करने के लिए पार्ससेल इंटरफेस का समर्थन करना पड़ा।
मेरी onStop और onStart कार्यों मैं क्रमशः बचाने के लिए और करने के लिए और एक बंडल से खेल राज्य को बहाल में, हालांकि जब मैं बंडल वस्तु की writeToParcel और createFromParcel कार्यों कभी नहीं कहा जाता है पर putParcelable और getParcelable कार्यों कहते हैं।
यह सोचकर कि यह खेल की सापेक्ष जटिलता के कारण हो सकता है, मुझे लगा कि मैंने इसे काम करने की कोशिश करने के लिए सबसे आसान एप्लिकेशन बनाया था।
कई Parcelable उदाहरण मैं ऑनलाइन देखा है के आधार पर, यह मेरी कक्षा में बदल गया:
public class ParcelableTest implements Parcelable {
int id;
public ParcelableTest(int newID)
{
id = newID;
}
private ParcelableTest(Parcel in) {
readFromParcel(in);
}
public void writeToParcel(Parcel out, int arg1) {
writeToParcel(out);
}
public void writeToParcel(Parcel out) {
Log.v("ParcelableTest","Writing to parcel");
out.writeInt(id);
}
public void readFromParcel(Parcel in) {
id = in.readInt();
}
public int describeContents() {
return 0;
}
public static final Parcelable.Creator<ParcelableTest> CREATOR = new
Parcelable.Creator<ParcelableTest>() {
public ParcelableTest createFromParcel(Parcel in) {
Log.v("ParcelableTest","Creating from parcel");
return new ParcelableTest(in);
}
public ParcelableTest[] newArray(int size) {
return new ParcelableTest[size];
}
};
}
और मेरे मुख्य गतिविधि से मैं बचाने/डेटा को पुनर्स्थापित करने के लिए निम्न कार्यों कहेंगे:
public Bundle saveToBundle(Bundle savedState)
{
savedState.putParcelable("Test1",mTest1);
savedState.putParcelable("Test2",mTest2);
return savedState;
}
public void restoreFromBundle(Bundle savedState)
{
mTest1 = savedState.getParcelable("Test1");
mTest2 = savedState.getParcelable("Test2");
}
लेकिन किसी कारण से न तो कार्यों में से (पटरपेर्सेबल और getParcelable फ़ंक्शंस के साथ) के परिणामस्वरूप मेरी टेस्ट क्लास में उपयुक्त पार्सलबल कॉल होंगे।
अजीब बात यह है कि यह किसी भी तरह से सही मानों को पढ़ता है (मैंने कक्षा में अधिक चर के साथ प्रयास किया है), लेकिन मेरा डिबगिंग और मेरा लॉग दिखाता है कि था एप्लिकेशन को कभी भी लिखने के लिए नहीं मिलता है और पार्परसेल बनाएं।
मुझे यहां क्या याद आ रही है?
किसी भी मदद/विचारों की सराहना की जाएगी।
अगर उत्तर आपके प्रश्न को हल किया गया है, तो क्या आप इसे चिह्नित करेंगे? या क्या आपको अपनी समस्या का बेहतर समाधान मिला? क्या आप इसे यहां पोस्ट करेंगे? – superjos