2012-09-21 14 views
23

Bir bölümün kapsamı içinde bir görünüme göre bir görünüm bulma yolu var mı? Özel bir liste oluşturmak için bir dizi parça kullanıyorum. Parçalar bir düzenden yüklenir, bu yüzden widget'larının hepsi aynı kimliğe sahiptir.parça içinde FindViewById

Her widget'a oluşturma sırasında (veya hemen sonrasında) özel bir kimlik vermenin bir yolunu bulabilirim. Bununla birlikte, findViewById'yi parçanın kapsamıyla sınırlandırabilseydim çok daha hoş olurdu.

+3

Kodunuzu ekleyin, cevap vermek daha kolay olacaktır. – tolgap

+0

[Parçada findViewById] Olası kopyası (http://stackoverflow.com/questions/6495898/findviewbyid-in-fragment) – Sufian

cevap

56
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; 
} 
+0

MrFox, görünümün şişirilmesi gerektiğine dikkat edin. Yani, inflater.inflate (v, container) olarak adlandırırdım. Bu, ya da MCeley'in ilk önerisini yapabilirdiniz, ancak bunun, Görünüm'ün şişirilmiş olması ve bu şekilde Etkinliğe Göre Etkinleştirildiğinden emin olun. Aksi takdirde, eğer onCreateView içinde şişirilmiş görünmeyle yaparsanız, boş bir işaretçi alırsınız. – dennisdrew

+1

Üzgünüm! Ben tamamen vardı bazı koddan çekti beri ve şişirmek süper oldu benim kötü –

+0

ben dönüş ifadesi dışında 'v' değişkenine herhangi bir referans göremiyorum. Bu bir yazım hatası mı, eğer öyleyse değişken ne olmalı? – Spinner

1

Evet, bir yolu var, rootView ile bulabilirsiniz. Öncelikle parçanın rootView=getView(); ait rootView bulmak ve sonra sen Fragment içinden getView().findViewById()

6

kullanın:

getFragmentManager().findFragmentByTag("YourFragmentTag").getView().findViewById(R.id.your_view); 

: kapsayan Faaliyet itibaren

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

veya

getFragmentManager().findFragmentById(R.id.your_fragment).getView().findViewById(R.id.your_view); 
22

tarafından yapabiliriz rootView.findViewById(...);

+2

Bazen getView() boştur, o zaman ne yaparsınız? – StackOverflowed

+3

'getView()' sadece null değerinden önce onCreateView() 'parçacığı tarafından çağrılır. Bu noktada, hiçbir görünüm oluşturulmadığından 'findViewById()' kullanılarak bulunacak bir görünüm yoktur. – MCeley

+0

@McCeley Fragman ayrıldıktan sonra getView() çağrılırsa, null döndürür mü? Sadece bir Fragment getView() çağrısı null döndürdüğünde merak ediyorum. – StackOverflowed

0
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     View rootview=null; 

      rootview=inflater.inflate(R.layout.fragment_web_view, container, false); 
      ListView lv = (ListView)rootview.findViewById(android.R.id.list); 

return rootview; 
     // Inflate the layout for this fragment 
     //return inflater.inflate(R.layout.fragment_web_view, container, false); 
    } 
İlgili konular