दरअसल गतिशील रूप से नई गतिविधियों को बनाने का कोई तरीका नहीं है।
लेकिन आप उसी गतिविधि के कई उदाहरण बना सकते हैं। इसके लिए आपकी गतिविधि के लॉन्च मोड को "मानक" या "सिंगलटॉप" पर सेट करने की आवश्यकता होगी।
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);
इस तरह के एक गतिशील तंत्र बनाने बहुत काम हो जाएगा, इसमें कोई शक नहीं है: नीचे कैसे जावा लेआउट पीढ़ी कोड की तरह दिखता है का एक उदाहरण है।
स्रोत
2014-07-16 22:48:58
वास्तव में, ऐसा लगता है कि आप समस्या को गलत तरीके से देख रहे हैं। एक गतिविधि में एक दृश्य है, यह अपने आप में से एक नहीं है। आपके द्वारा वर्णित किए जाने वाले कार्यों के लिए आपको गतिशील रूप से क्रियाकलाप (या यहां तक कि टुकड़े) बनाने का कोई कारण नहीं है। – Shadesblade