2014-07-16 9 views
5

मैं एप्लिकेशन पर काम कर रहा हूँ, और मैं निम्नलिखित करना चाहते हैं:बनाना गतिविधि गतिशील रूप

  1. उपयोगकर्ता एक नया पृष्ठ (नई गतिविधि और XML लेआउट) पैदा करता है।
  2. उपयोगकर्ता के पृष्ठ को डेटाबेस में सहेजना।
  3. एक आइटम के रूप ListView करने के लिए पृष्ठ जोड़ना, और इसे लॉन्च जब उपयोगकर्ता

ListView पर क्लिक करेंगे ।

मैंने "गतिविधि को गतिशील रूप से बनाना" के बारे में कई उत्तरों यहां देखा और मुझे लगता है कि यह असंभव है, इसलिए मुझे नहीं पता कि यह कैसे करें।

उपयोगकर्ता द्वारा बनाए जा सकने वाले पृष्ठों की संख्या असीमित है इसलिए इसे गतिशील रूप से किया जाना चाहिए। ListView में किसी पृष्ठ का प्रत्येक लेआउट वही है।

बहुत बहुत धन्यवाद !!!

+0

वास्तव में, ऐसा लगता है कि आप समस्या को गलत तरीके से देख रहे हैं। एक गतिविधि में एक दृश्य है, यह अपने आप में से एक नहीं है। आपके द्वारा वर्णित किए जाने वाले कार्यों के लिए आपको गतिशील रूप से क्रियाकलाप (या यहां तक ​​कि टुकड़े) बनाने का कोई कारण नहीं है। – Shadesblade

उत्तर

7

दरअसल गतिशील रूप से नई गतिविधियों को बनाने का कोई तरीका नहीं है।

लेकिन आप उसी गतिविधि के कई उदाहरण बना सकते हैं। इसके लिए आपकी गतिविधि के लॉन्च मोड को "मानक" या "सिंगलटॉप" पर सेट करने की आवश्यकता होगी।

Intent intent = new Intent(this, MyDynamicActivity.class); 
Bundle b = new Bundle(); 
b.putInt("LayoutIndex", mode); 
intent.putExtras(b); 
startActivity(intent); 

और गतिविधि:

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

class MyDynamicActivity extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     Bundle b = getIntent().getExtras(); 
     int layoutIndex = b.getInt("LayoutIndex"); 
     // and here populate the activity differently based on layoutIndex value 
    } 

} 

लेकिन आप गतिशील रूप से गतिविधि के विभिन्न उदाहरणों को कैसे पॉप्युलेट कर सकते हैं?

अच्छा, कोई आसान तरीका नहीं है। उदाहरण के लिए आप विज्ञापन-होक एक्सएमएल लेआउट फ़ाइल नहीं बना सकते हैं और इसे फाइल सिस्टम में स्टोर कर सकते हैं, क्योंकि एक्सएमएल लेआउट को एंड्रॉइड द्वारा लोड करने योग्य एक विशिष्ट प्रारूप में संकलित किया जाना चाहिए।

एकमात्र चीज जो आप कर सकते हैं वह है अपने जावा कोड से उपयोगकर्ता द्वारा सेट नियम नियमों के बाद गतिशील रूप से लेआउट विजेट सेट करें।

LinearLayout layout = new LinearLayout(this); 
layout.setGravity(Gravity.CENTER); 

LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
Button button = new Button(this); 
button.setText("My Button"); 
layout.addView(button, params); 

setContentView(layout); 

इस तरह के एक गतिशील तंत्र बनाने बहुत काम हो जाएगा, इसमें कोई शक नहीं है: नीचे कैसे जावा लेआउट पीढ़ी कोड की तरह दिखता है का एक उदाहरण है।

2

शायद किसी गतिविधि के बजाय आप संवाद या पॉपअपविंडो का उपयोग कर सकते हैं?

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