2015-07-12 9 views
6

Parcelable डॉक्स का कहना है कि CREATOR क्षेत्र स्थिर होने चाहिए नहीं कर सकते हैं, लेकिन जब मैं इसे इस तरह मैं त्रुटि मिलती है को लागू करने की कोशिश "इनर कक्षाएं स्थिर घोषणाओं नहीं हो सकता "।Parcelable को लागू नहीं किया जा सकता क्योंकि मैं निर्माता क्षेत्र स्थिर

मैं एक अलग वर्ग में मेरी CategoryButton डाल (MainActivity में एक आंतरिक वर्ग के रूप में यह घोषित नहीं) लेकिन फिर मैं निर्माता में getApplicationContext() कॉल नहीं कर सका सुपर करने के लिए पारित करने के लिए कर इस को हल करने का प्रयास किया।

public class MainActivity extends ActionBarActivity { 


    private class CategoryButton extends Button implements Parcelable{ 
     private ArrayList<CategoryButton> buttons = null; 
     private RelativeLayout.LayoutParams params = null; 
     public CategoryButton(Context context){ 
      super(context); 
     }; 
     public void setButtons(ArrayList<CategoryButton> buttons){ 
      this.buttons = buttons; 
     } 
     public void setParams(RelativeLayout.LayoutParams params){ 
      this.params = params; 
     } 
     public ArrayList<CategoryButton> getButtons(){ 
      return this.buttons; 
     } 
     public RelativeLayout.LayoutParams getParams(){ 
      return this.params; 
     } 



     public int describeContents() { 
      return 0; 
     } 
     public void writeToParcel(Parcel out, int flags) { 
      out.writeList(buttons); 
     } 
     public static final Parcelable.Creator<CategoryButton> CREATOR // *** inner classes cannot have static declarations 
       = new Parcelable.Creator<CategoryButton>() { 
      public CategoryButton createFromParcel(Parcel in) { 
       return new CategoryButton(in); // *** 'package.MainActivity.this' cannot be referenced from a static context 
      } 

      public CategoryButton[] newArray(int size) { 
       return new CategoryButton[size]; 
      } 
     }; 

     private CategoryButton(Parcel in) { 
      super(getApplicationContext()); 
      in.readList(buttons, null); 
     } 

    } 

// ...other activity code 
+0

मैं समझता हूँ कि तुम क्यों बटन का विस्तार करने और Parcerable –

+0

लागू करते हैं न स्थापित करने के लिए, यानी की जरूरत है मैं एक बटन एक संपत्ति है कि है की जरूरत 'बटन 'जिसमें अन्य बटन शामिल हैं ... –

+0

आपको' पार्सेलबल 'को लागू करने की आवश्यकता क्यों है? – Karakuri

उत्तर

2

आप अपने CategoryButton के रूप में आंतरिक स्थिर क्योंकि मेरे ऐप के लिए

private static class CategoryButton extends Button implements Parcelable { 
    ... 
+0

मैंने अभी यह कोशिश की है और हालांकि यह 'CREATOR' फ़ील्ड समस्या को हल करता है, यह ऐसा करता है इसलिए मैं कन्स्ट्रक्टर में सुपर को पास करने के लिए' getAplicationContext() 'को कॉल नहीं कर सकता। –

+0

बटन एक दृश्य है, यानी 'सुपर (getContext()) के रूप में संदर्भ में अपना कॉल बदलें; ' –

+0

हम्म अब मुझे सुपरटेप कन्स्ट्रक्टर को –

संबंधित मुद्दे

 संबंधित मुद्दे