दिलचस्प पोस्ट
XMLHttpRequest की प्रतिक्रिया कैसे प्राप्त करें? क्या fgets () एक छोटी बफर के अनुरूप नल लौट रहा है? Sed के साथ पीछे के स्थान को कैसे निकालना है? HTML तालिका में कॉलम छिपाएंगे? कई स्थितियों द्वारा आर में डेटाफ्रेम सबसेट करना एक UIImage के अस्पष्टता / अल्फा सेट करने के लिए कैसे? एक्लिप्स रीडिंग स्टडीन (System.in) एक फ़ाइल से मैं एमवीसी में स्क्रॉल की स्थिति कैसे बनाऊँ? पैसे से निपटने के लिए क्या मुझे NSDecimalNumber का उपयोग करना चाहिए? एंड्रॉइड पर बिटमैप को देखें फ़ंक्शन को हर 60 सेकंड कॉल करना सभी के बारे में … Z- सूचकांक? 100% की चौड़ाई वाली एचटीएमएल तालिका, टॉब में ऊर्ध्वाधर स्क्रॉल के साथ जावा पायथन एकीकरण बास में फ़ाइल नाम और एक्सटेंशन निकालें

टुकड़ा में FindViewById

मैं एक टुकड़ा में एक छवि दृश्य बनाने की कोशिश कर रहा हूं जो कि छवि विवा तत्व को संदर्भित करेगा जो मैंने टुकड़ा के लिए एक्सएमएल में बनाया है। हालांकि, यदि मैं एक गतिविधि वर्ग को बढ़ाता हूं तो findViewById विधि केवल तभी काम करती है। क्या कोई वैसे भी है जो मैं इसे टुकड़ों में भी इस्तेमाल कर सकता हूं?

 public class TestClass extends Fragment { public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { ImageView imageView = (ImageView)findViewById(R.id.my_image); return inflater.inflate(R.layout.testclassfragment, container, false); } } 

इस findViewById विधि पर एक त्रुटि है जो बताती है कि विधि अपरिभाषित है।

वेब के समाधान से एकत्रित समाधान "टुकड़ा में FindViewById"

onViewCreated विधि को लागू करने से getView () या देखें पैरामीटर का उपयोग करें यह टुकड़े के लिए रूट दृश्य देता है ( onCreateView() विधि द्वारा लौटा हुआ एक) इसके साथ आप findViewById() को कॉल कर सकते हैं

 @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { ImageView imageView = (ImageView) getView().findViewById(R.id.foo); // or (ImageView) view.findViewById(R.id.foo); 

getView() रूप में केवल getView() बाद ही काम करता है, तो आप इसे किसी भी तरह से बना सकते हैं , getView() टुकड़े के तरीकों पर।

आपको फ्रैगमेंट के दृश्य को फुलाए जाने की जरूरत है और इसे findViewById() लिए View findViewById() View

 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.testclassfragment, container, false); ImageView imageView = (ImageView) view.findViewById(R.id.my_image); return view; } 

Fragment क्लास के अंदर आपको विवर क्रिएट () ओवरराइड मेथड मिलेगा, जहां आपको हमेशा अपने विचारों को इस पद्धति के रूप में प्रारंभ करना चाहिए जैसा कि आप ऑब्जेक्ट को देखने के लिए उपयोग करते हैं जिससे आप अपना विचार देख सकते हैं जैसे:

 @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); view.findViewById(R.id.yourId).setOnClickListener(this); // or getActivity().findViewById(R.id.yourId).setOnClickListener(this); } 

onViewCreated() मामले में हमेशा याद रखें कि onViewCreated() विधि स्वचालित रूप से नहीं onViewCreated() यदि आप रिक्त या super.onCreateView() को onViewCreated() विधि से लौट रहे हैं। ListFragment मामले में डिफ़ॉल्ट रूप से ListFragment किया जाएगा डिफ़ॉल्ट रूप से ListFragment return FrameLayout रूप में।

ध्यान दें: आप getView() का उपयोग करते हुए एक बार getView() सफलतापूर्वक क्रियान्वित कर getView() , तो वर्ग में कहीं भी टुकड़ा दृश्य प्राप्त कर सकते हैं। अर्थात

 getView().findViewById("your view id"); 

मुझे पता है यह एक पुराना सवाल है, लेकिन प्रचलित उत्तर में कुछ वांछित होने की उम्मीद है

प्रश्न स्पष्ट नहीं है कि imageView क्या जरूरी है – क्या हम इसे वापस दृश्य के रूप में वापस कर रहे हैं, या बाद में बाद में संदर्भ सहेज रहे हैं?

किसी भी तरह से, यदि ImageView फुलाया लेआउट से आ रहा है, तो ऐसा करने का सही तरीका होगा:

 public class TestClass extends Fragment { public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.testclassfragment, container, false); ImageView imageView = (ImageView)v.findViewById(R.id.my_image); return v; } } 

पहले टुकड़ा देखने के लिए और फिर इस से देखें अपने ImageView देखें

 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.testclassfragment, container, false); ImageView imageView = (ImageView) view.findViewById(R.id.my_image); return view; } 

getView() रूट दृश्य दे देंगे

 View v = getView().findViewByID(R.id.x); 

आप दृश्यमान किए गए () पर ओवरराइड कर सकते हैं जो सभी विचारों को फुलाया जाने के बाद सही कहा जाता है अपने टुकड़े के सदस्यों को View चर को भरने के लिए यह सही जगह है। यहां एक उदाहरण है:

 class GalleryFragment extends Fragment { private Gallery gallery; (...) @Override public void onViewCreated(View view, Bundle savedInstanceState) { gallery = (Gallery) view.findViewById(R.id.gallery); gallery.setAdapter(adapter); super.onViewCreated(view, savedInstanceState); } } 

आप इसे onActivityCreated विधि में भी कर सकते हैं।

 public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); } 

जैसे वे यहां करते हैं: http://developer.android.com/reference/android/app/Fragment.html

 getView().findViewById(R.id.foo); 

तथा

 getActivity().findViewById(R.id.foo); 

संभव है

विधि getView () OnCreate और इसी तरह के तरीकों के बाहर टुकड़े पर काम अभ्यस्त।

आपके पास दो तरीके हैं, व्यूअर पर फ़ंक्शन को देखने के लिए पास करें (इसका मतलब है कि आप केवल तब ही आपके फ़ंक्शन चला सकते हैं जब दृश्य बनाया जा रहा है) या दृश्य को एक चर के रूप में सेट करें:

 private View rootView; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { rootView = inflater.inflate(R.layout.fragment_contatos, container, false); } public void doSomething () { ImageView thumbnail = (ImageView) rootView.findViewById(R.id.someId); } 
 EditText name = (EditText) getView().findViewById(R.id.editText1); EditText add = (EditText) getView().findViewById(R.id.editText2); 

दृश्य पर findViewById() कॉल करने के साथ सहमत हुए

 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View V = inflater.inflate(R.layout.testclassfragment, container, false); ImageView imageView = (ImageView) V.findViewById(R.id.my_image); return V; } 

एपीआई स्तर 11 पर प्रलेखन के अनुसार

संदर्भ, बैक स्टैक में http://developer.android.com/reference/android/app/Fragment.html

छोटे संकेत

 /** * The Fragment's UI is just a simple text view showing its * instance number. */ @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.hello_world, container, false); View tv = v.findViewById(R.id.text); ((TextView)tv).setText("Fragment #" + mNum); tv.setBackgroundDrawable(getResources().getDrawable(android.R.drawable.gallery_thumb)); return v; } 

getView() का उपयोग टुकड़े के दृश्य को देता है, तो आप टुकड़े दृश्य में किसी भी दृश्य तत्व को एक्सेस करने के लिए findViewById() को कॉल कर सकते हैं।

उपयोग

 imagebutton = (ImageButton) getActivity().findViewById(R.id.imagebutton1); imageview = (ImageView) getActivity().findViewById(R.id.imageview1); 

यह काम करेगा

1) अपने लेआउट फ़ाइल को घोषित करें।

 public View onCreateView(LayoutInflater inflater,ViewGroup container, Bundle savedInstanceState) { return inflate(R.layout.myfragment, container, false); } 

2) फिर, अपने विचार का आईडी प्राप्त करें

 @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); TextView nameView = (TextView) view.findViewById(R.id.textview1); } 

इसे लागू करने का सबसे अच्छा तरीका निम्नानुसार है:

 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { rootView = inflater.inflate(R.layout.testclassfragment, container, false); ImageView imageView = (ImageView) rootView.findViewById(R.id.my_image); return rootView } 

इस तरह, रूटव्यू का उपयोग एक्सएमएल लेआउट में परिभाषित प्रत्येक नियंत्रण के लिए किया जा सकता है और इस तरह से कोड बहुत क्लीनर है।

उम्मीद है की यह मदद करेगा 🙂

कोशिश करो यह मेरे लिए काम करता है

 public class TestClass extends Fragment { private ImageView imageView; public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.testclassfragment, container, false); findViews(view); return view; } private void findViews(View view) { imageView = (ImageView) view.findViewById(R.id.my_image); } } 

ढाल स्केलेटन प्लगइन का उपयोग करें, यह स्वचालित रूप से आपके लेआउट के संदर्भ के साथ दृश्य धारक वर्ग उत्पन्न करेगा।

 public class TestClass extends Fragment { public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { MyLayout myLayout = new MyLayout(inflater, container, false); myLayout.myImage.setImageResource(R.drawable.myImage); return myLayout.view; } } 

अब मान लें कि आपकी ImageView my_layout.xml फ़ाइल में घोषित किया गया था, यह आपके लिए स्वचालित रूप से मेरा लेआउट क्लाउड उत्पन्न करेगा।

एक और तरीका है जिसे व्यू क्रिएटेड पर कॉल किया गया है।

 @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); ImageView imageView = (ImageView) view.findViewById(R.id.imageview1); } 

इसे इस्तेमाल करे:

 View v = inflater.inflate(R.layout.testclassfragment, container, false); ImageView img = (ImageView) v.findViewById(R.id.my_image); return v; 

प्रयत्न

 private View myFragmentView; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { myFragmentView = inflater.inflate(R.layout.myLayoutId, container, false); myView = myFragmentView.findViewById(R.id.myIdTag) return myFragmentView; } 

आप अपने विखंडन के भीतर public void onAttach(Activity activity) विधि पर अपने public void onAttach(Activity activity) अंदर प्राप्त गतिविधि ऑब्जेक्ट के साथ findViewById() को कॉल कर सकते हैं।

गतिविधि को एक चर में सहेजें उदाहरण के लिए:

टुकड़ा वर्ग में : private Activity mainActivity; onAttach() विधि में: यह। this.mainActivity=activity;

अंत में हर findViewById को वांछनीय माध्यम से निष्पादित करें: mainActivity.findViewById(R.id.TextView);

OnreateView विधि के अंदर

1) पहले आपको लेआउट / फुटेज बढ़ाना है जिसे आप उदाहरण के साथ जोड़ना चाहते हैं। LinearLayout

 LinearLayout ll = inflater.inflate(R.layout.testclassfragment, container, false); 

2) फिर आप अपने छवि को लेआउट से देख सकते हैं

 ImageView imageView = (ImageView)ll.findViewById(R.id.my_image); 

3) फुलाया लेआउट लौटें

 return ll; 

ध्यान दें :

एपीआई स्तर 26 से, आपको विशेष रूप से findViewById के परिणाम को डालने की आवश्यकता नहीं है क्योंकि यह इसके रिटर्न प्रकार के लिए अनुमान का उपयोग करता है।

तो अब आप बस कर सकते हैं,

 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.testclassfragment, container, false); ImageView imageView = view.findViewById(R.id.my_image); //without casting the return type return view; } 

आपको दृश्य बढ़ाना है

 public class TestClass extends Fragment { public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.testclassfragment, container, false); ImageView imageView = (ImageView)v.findViewById(R.id.my_image); return v }} 

लेआउट फ़्लाईटर यहां तस्वीर में आता है। लेआउट फ़्लाईटर एक ऐसा वर्ग है जो हमें जावा कोड में XML दृश्यों का उपयोग करने में सक्षम बनाता है। तो आप निम्न कोड के साथ चर वी में रूट एक्सएमएल व्यू फुला सकते हैं। और फिर वी का उपयोग करते हुए, आप रूट व्यू वी के बच्चे के दृश्य पा सकते हैं।

 public class TestClass extends Fragment { public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.testclassfragment, container, false); ImageView imageView = (ImageView)v.findViewById(R.id.my_image); return v; } } 

ऐसी चीज़ों का उपयोग करने का सबसे आसान तरीका है बटरनचीफ़ का उपयोग करना यह करके आप नीचे बताए अनुसार @OnClick () द्वारा बस कई Onclciklisteners जोड़ सकते हैं:

 public class TestClass extends Fragment { @BindView(R.id.my_image) ImageView imageView; @OnClick(R.id.my_image) public void my_image_click(){ yourMethod(); } public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view=inflater.inflate(R.layout.testclassfragment, container, false); ButterKnife.bind(getActivity,view); return view; } } 
 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.testclassfragment, container, false); ImageView imageView = (ImageView) view.findViewById(R.id.my_image); return view; } 

ध्यान दें कि यदि आप getView() विधि का उपयोग करते हैं तो यह nullPointerException कारण हो सकता है क्योंकि यह nullPointerException देता है और यह getView() विधि के बाद कुछ दृश्य होगा।

टुकड़ों में हमें उस विंडो के दृश्य की आवश्यकता होती है ताकि हम इस टुकड़े के क्रेट-दृश्य को बनाते हैं।

तब दृश्य प्राप्त करें और उस दृश्य तत्वों के प्रत्येक दृश्य आईडी तक पहुंचने के लिए इसका उपयोग करें ..

  class Demo extends Fragment { @Override public View onCreateView(final LayoutInflater inflater,ViewGroup container, Bundle savedInstanceState) { View view =inflater.inflate(R.layout.demo_fragment, container,false); ImageView imageview=(ImageView)view.findViewById(R.id.imageview1); return view; } } 

.commit () के बाद लेनदेन का समय भी इस समस्या का कारण हो सकता है

मुझे एक ही मुद्दा मिला (एक टुकड़े में देखें) तक नहीं पहुंचा जा सका। इसका कारण निकला, कि – तुरंत बाद (फ्रैग्मेंट ट्रांसजनैक्शन ) .commit () -, यूआई में दृश्य सक्रिय नहीं किया गया था। इसमें कोई गारंटी नहीं है, जब .commit () के बाद लेनदेन होता है; यह केवल कतारबद्ध है इसलिए मैंने लेनदेन को लागू करने के लिए मजबूर करने के लिए (फ्रैगमेंट मैनेजर ) .executePendingTransactions () जोड़ा। उसके बाद, दृश्य काम को संदर्भित करता है!