मैं एक्सएमएल के माध्यम से एक भाई नियंत्रण का संदर्भ देने की कोशिश कर रहा हूं।मुद्रास्फीति के दौरान किसी दूसरे से एक नियंत्रण का संदर्भ कैसे लें?
MyTextView से एक आईडी संदर्भ के लिए एक विशेषता की घोषणा करने के लिए:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="MyTextView">
<attr name="valueTextViewId" format="reference" />
</declare-styleable>
</resources>
fragment_example.xml - कस्टम विशेषता का उपयोग कैसे करें:
<!-- Declare a "Title" text view that references a "Value" -->
<com.example.MyTextView
android:id="@+id/foo"
example:valueTextViewId="@id/bar"
... />
<!-- Depending on the "text" attribute of this "Value" textview -->
<!-- Do something within "Title" textview -->
<com.example.MyTextView android:id="@+id/bar" />
MyFragment.java - बढ़ाना नियंत्रण
इस उदाहरण मेंpublic TextView(Context context, AttributeSet attrs) {
super(context, attrs);
TypedArray a = ctx.obtainStyledAttributes(attrs, R.styleable.MyTextView);
int refId = a.getResourceId(R.styleable.MyTextView_valueTextViewId);
// Updated to use context
if (refId > -1 && context instanceof Activity) {
Activity a = (Activity)context;
View v = a.findViewById(refId);
// THE PROBLEM: v is null
if (v != null) {
// In my case, I want to check if the "Value" textview
// is empty. If so I will set "this" textColor to gray
}
}
}
v
हमेशा null
है: -
MyTextView वर्ग निर्माता मुद्रास्फीति के दौरान संदर्भित TextView के साथ कुछ करना। मुझे लगता है क्योंकि लेआउट मुद्रास्फीति के दौरान, नियंत्रण अभी तक जोड़े नहीं गए हैं। ध्यान देने योग्य एक और बात यह है कि यह Fragment
में है, इसलिए हो सकता है कि मैं मूल गतिविधि में दृश्य नहीं ढूंढ सकूं।
क्या इस तरह से किसी अन्य से नियंत्रण का संदर्भ देना संभव है?
यह दिलचस्प और शुरुआत है। हालांकि जब मैं 'लेआउट इन्फ्लूटर' का उपयोग कर रहा हूं, तो मेरे पास 'mactivity' को पार करने की क्षमता नहीं है। यह मुझे आश्चर्यचकित करता है कि क्या सीटीआर में संदर्भ विशेषता गतिविधि है ... –
यह हो सकता है। 'if (संदर्भ उदाहरण गतिविधि) के माध्यम से जांचें और फिर इसे '((गतिविधि) संदर्भ डालें)' – r2DoesInc
शायद निर्माता में उस तर्क को न करें। 'SetActivityValue (mActivity)' के लिए MyTextView में एक विधि जोड़ें और फिर गतिविधि को स्पष्ट रूप से सेट करने के बाद, फिर अन्य टेक्स्टव्यू को छिपाने या छेड़छाड़ करने का अपना तर्क करें, हालांकि आप कर सकते हैं। – r2DoesInc