2015-02-12 9 views
9

मैंने हाल ही में अपने एंड्रॉइड डिवाइस के लिए ऐप्स विकसित करने पर एक नज़र डालना शुरू कर दिया है। मेरे लिए यह ब्याज किसने शुरू किया था, मैं कुछ आर्डिनो के साथ खेल रहा था, उन्हें अपने फोन के साथ संवाद करने का अच्छा विचार था, जैसा कि मैं जो भी मूल्य अर्जित करता हूं, उसके लिए इंटरफ़ेस कहता हूं। अब मैं इसे पूरा करने के लिए आसान तरीका निकाल सकता हूं और सार्वजनिक स्रोत का उपयोग कर सकता हूं लेकिन इस तरह से सीखने के लिए इतना कुछ नहीं है, और मैं इसे जिस तरह से चाहता हूं उसे पसंद करूंगा।एक ही गतिविधि के लिए एकाधिक टुकड़े कैसे संभालें

अब मुझे लगता है कि मुझे पूछने वाले पहले प्रश्न यह है कि, क्या कई टुकड़े/एकल गतिविधि मेरे लिए इसे पूरा करने का सबसे अच्छा तरीका होगा? असल में, मैं arduino से 1 कनेक्शन चाहता हूं, सभी मान खींचें, लेकिन "टैब" के आधार पर मैंने चुना है कि मैं कुछ मानों को कुछ तरीकों से प्रदर्शित करना चाहता हूं। मैंने प्रत्येक टैब को एक अलग टुकड़ा बनाने का फैसला किया और मूल्यों को अलग-अलग तरीकों से प्रदर्शित किया। जैसे मैंने कहा, मैं बस एंड्रॉइड विकास अनुभव शुरू कर रहा हूं इसलिए इस विकल्प को आधार के लिए बहुत कुछ नहीं है।

तो यह कई टुकड़ा विचार पर उतारना चाहते जा रहा है मेरे पास है:

  1. निर्मित कई Fragment.xml फ़ाइलों
  2. परिभाषित किया जाता है प्रत्येक अलग दृश्य
  3. उपलब्ध टुकड़े प्रदर्शित करने के लिए एक सूची बनाई के लिए एक वर्ग
  4. चयनित

तो अनिवार्य रूप से मेरा ऑनमेनूटेम देखो देखें इस तरह एड।

FragmentTransaction FT = getFragmentManager.beginTransaction(); 
switch(position){ 
    case 1: 
     FT.replace(R.id.fragment_container, new MyFragment()).commit(); 
     break; 
    case 2: 
     FT.replace(R.id.fragment_container, new MySecondFragment()).commit(); 
     break; 
} 

उपर्युक्त कोड काम करता है, यह वही करता है जो मैं बिना किसी समस्या के चाहता था। मुझे वास्तव में यह पसंद नहीं है, क्योंकि प्रत्येक टुकड़े के लिए मैं जोड़ना चाहता था, मुझे स्विच में एक नया मामला जोड़ना होगा। इसके अलावा यह हर बार एक नया टुकड़ा तत्काल करता है, भले ही कोई पहले से ही बनाया गया हो। क्या यही समस्या है?

मेरे साथ सबसे बड़ी समस्या यह है कि यह स्केल करने के लिए सबसे आसान नहीं है। 2-3 टुकड़ों के लिए यह इसे संभालने का सबसे बुरा तरीका नहीं है (मेरी आंखों में)। मैं स्विच में प्रत्येक के लिए एक व्यक्तिगत मामले के बिना जितना टुकड़ा चाहता हूं उतना टुकड़ा प्राप्त करना चाहता हूं। तो मैंने जो किया वह एक टुकड़ा बनाया गया था ताकि मेरे प्रत्येक टुकड़े का एक उदाहरण हो सके।

List<Fragment> fragmentList; 

private void populateFragmentList();{ 
    fragmentList = new ArrayList<Fragment>(); 
    fragmentList.add(new HomeFrag()); 
    fragmentList.add(new BluetoothFragment()); 
    fragmentList.add(new USBFragment()); 
    fragmentList.add(new RCInfoFragment()); 
    fragmentList.add(new ControllerFragment()); 
    fragmentList.add(new FingerCordsFrag()); 
} 
public void onMenuItemSelect(int position, int curPosition){ 
    if(fragmentList.get(position).isAdded()){ 
     getFragmentManager().beginTransaction().show(fragmentList.get(postition)) 
     .hide(fragmentList.get(curPosition)).commit(); 
    } 
    else 
     getFragmentManager().beginTransaction().add(R.id.fragment_container, fragmentList.get(position)).show(fragmentList.get(position)).hide(fragmentList.get(curPosition)).commit(); 
} 

और यह विधि भी काम करती है। मैं इसे अपने सभी टुकड़ों को प्रदर्शित करने के लिए प्राप्त कर सकता हूं, हर बार प्रत्येक टुकड़े को फिर से चालू करने के बिना। मेरा मानना ​​है कि यह वही करता है जो मैं करना चाहता हूं, यह काफी अच्छी तरह से स्केल करता है (स्विच/केस आईएमओ से बेहतर)। मेरी समस्या यह है कि जब मैं अभिविन्यास बदलता हूं तो यह सब पागल हो जाता है। अब तक मैं केवल पोर्ट्रेट मोड का परीक्षण कर रहा था, जब मैं उन्हें अन्य अभिविन्यास में चुनता हूं तो मैं अपने किसी भी टुकड़े को देखने में सक्षम नहीं हूं। मैं इसे किसी भी ओरिएंटेशन में शुरू कर सकता हूं, और यह काम करता है, लेकिन जब मैं रन-टाइम के दौरान इसे बदलता हूं, तो मैं केवल उस खंड को देख सकता हूं जब मैंने अभिविन्यास बदल दिया था।

अब, प्रत्येक टुकड़े "ऑनक्रेट व्यू" कहा जा रहा है, यह सिर्फ इतना है कि प्रदर्शन नहीं दिखाया जा रहा है। मेरा मानना ​​है कि मैंने इसे संकुचित कर दिया है, यह अभिविन्यास परिवर्तन से बनाई गई नई गतिविधि से जुड़ा नहीं जा रहा है। क्या वैसे भी मैं उन टुकड़ों को दोबारा जोड़ सकता हूं जो पहले से ही एक नई गतिविधि में बनाए गए हैं।

सारांश में, सवाल मैं कर रहे हैं:

  1. इस मॉडल भी अपने आवेदन के लिए एक अच्छा तरीका है?
  2. क्या टुकड़े टुकड़े करने के लिए एक सभ्य तरीका है जो अच्छी तरह से स्केल करता है? कोई उदाहरण नहीं मिल रहा है।
  3. प्रत्येक बार जब मैं एक अलग टैब खोलता हूं तो इसे प्राप्त करने के लिए उचित तरीका खोलता है?
  4. क्या मेरी सूची में मेरी टुकड़ों को संग्रहित करने का मेरा तरीका को उचित तरीके से संभालने का तरीका है?
  5. अभिविन्यास परिवर्तन के बाद मैं नई गतिविधि के लिए एक टुकड़ा कैसे दोहरा सकता हूं?

आपके समय के लिए धन्यवाद।

* इस कोड को फ्लाई पर टाइप करना पड़ा क्योंकि मैं, किसी कारण से, मेरे सी/पीएड कोड को सही तरीके से प्रारूपित नहीं कर सका।

उत्तर

-1

मैं इसे टुकड़ों का उपयोग करें और this example साथ शुरू करने के लिए एक अच्छा विकल्प मानते हैं कि ...

आप निश्चित रूप से कुछ "एडाप्टर" और अधिक आसानी से सभी लेनदेन को संभालने के लिए ओवरराइड करना चाहिए ... के लिए

चेक here अभिविन्यास समस्या ...

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