जब एक कस्टम दृश्य बनाने, मैंने देखा है कि कई लोगों को इस तरह यह करने के लिए लग रहे हैं:क्या मुझे सुपर() या एंड्रॉइड कस्टम व्यू कन्स्ट्रक्टर के लिए यह() कॉल करना चाहिए?
public MyView(Context context) {
super(context);
// this constructor used when programmatically creating view
doAdditionalConstructorWork();
}
public MyView(Context context, AttributeSet attrs) {
super(context, attrs);
// this constructor used when creating view through XML
doAdditionalConstructorWork();
}
private void doAdditionalConstructorWork() {
// init variables etc.
}
इस के साथ मेरी समस्या यह है कि मुझे मेरे चर अंतिम बनाने से रोकता है। निम्नलिखित करने के लिए कोई कारण नहीं है?
public MyView(Context context) {
this(context, null);
// this constructor used when programmatically creating view
}
public MyView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
// this constructor used when creating view through XML
}
public MyView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
// this constructor used where?
// init variables
}
मैं एक्सएमएल के माध्यम से और कोड के माध्यम से ठीक दृश्य बनाने के लिए कर लिया है, लेकिन मैं अगर वहाँ इस दृष्टिकोण के लिए किसी भी कमियां हैं यकीन नहीं है। क्या यह सभी मामलों में काम करेगा?
वहाँ another part to this question
कॉलिंग 'यह' वर्तमान कक्षा के दूसरे निर्माता को आमंत्रित करता है। मुझे लगता है कि यह ऐसा कुछ है जिसे आप महसूस नहीं करते थे। इस प्रकार 'यह (संदर्भ, शून्य); 'सार्वजनिक' MyView (संदर्भ संदर्भ, विशेषता एसईटी) कॉल करता है {' जो बदले में 'सार्वजनिक MyView (संदर्भ संदर्भ, विशेषता सेट्स, int defStyle) {'। यह कन्स्ट्रक्टर इनवेशन जावा भाषा में बहुत आम नहीं है, लेकिन मुझे कोई कारण नहीं दिखता है कि यह काम नहीं करेगा। –
मुझे एहसास हुआ कि, मैं सिर्फ पैरामीटर के बारे में चिंतित था। :) –