2013-01-08 25 views
6

Bir xml düzeninden RoboFragment'e bazı görünümler enjekte etmek istiyorum ancak maalesef Nullpointer Exception alıyorum. RoboGuice (büyük bir DI çerçevesinin yanı sıra) çok az belgelere sahip olduğundan, RoboFragmentime açıklama eklemek için @ContentView(R.layout.fragmentlayout) kullanıp kullanamayacağımı bilmiyorum. Yapmam gereken bir şey var mı? Ne şu anda yapmak geçerli:
RoboFragment içinde InjectView

public class TestFragment extends RoboFragment { 

    @InjectView(R.id.upBtn) private Button upBtn; 

    @Override 
    public View onCreateView(LayoutInflater layoutInflater, 
      ViewGroup container, Bundle savedInstanceState) { 

     super.onCreateView(layoutInflater, container, savedInstanceState); 
     View view = layoutInflater.inflate(R.layout.fragmentlayout, container, false); 
     RoboGuice.getInjector(getActivity()).injectMembers(this); 
     upBtn.setSelected(false); // <------ Null pointer here 
     return view; 
    } 
} 
+0

Ben bu iki soruya bir göz attım umut: http://stackoverflow.com/questions/9780769/android-roboguice-inject-views-on-fragment ve http://stackoverflow.com/questions/8289660/ herhangi bir-basit-örnekler-kullanarak-robotlar-parçaları-android- –

+0

Evet. Birincisi, enjeksiyonun onViewCreated sırasında gerçekleştiğine işaret ediyor, ancak nasıl olduğunu da açıklamıyorum. İkincisi de RoboGuice.getInjector (getActivity()) .InjectViewMembers (this) çalıştı; ama yardımcı olmadı. –

cevap

14

, sen

@Override 
public void onViewCreated(View view, Bundle savedInstanceState) { 
    super.onViewCreated(view, savedInstanceState); 
    RoboGuice.getInjector(getActivity()).injectViewMembers(this); 
} 

göreceksiniz, injectViewMembers() kullanın. Görünümü onViewCreated()'a kadar dokunarak erteleyebilirsiniz, o zaman sizin için ayarlanacaktır.

+1

Thr sağ cevapcı burada ... – Snicolas

+0

Tamam haklısın. Cevabını tüm bu kez kabul etmedim çünkü hala boş bir işaretçi alıyorum, ama başka bir nedenden dolayı (onCreateView'de düğme dinleyicisini ayarlıyordum). Ben @ContextView işe yaramadı –

+0

rağmen bu mümkün olup olmadığını ... belki anlarım .. benim retardness dolayı özür? –

-3

manzarayı dönmek gerekir. UpBtn.setSelected (false) sonrası; Eğer RoboFragment için kaynak bakarsanız el enjekte ısrar ederse

public View onCreateView(LayoutInflater layoutInflater, ViewGroup container, Bundle savedInstanceState) { 

    super.onCreateView(layoutInflater, container, savedInstanceState); 
    View view = layoutInflater.inflate(R.layout.fragmentlayout, container, false); 
    RoboGuice.getInjector(getActivity()).injectMembers(this); 
    upBtn = (Button) view.findViewById(YOUR_ID); // Initialization 
    upBtn.setSelected(false); // <------ Null pointer here 
return view; 
} 
+1

Bu, "NullPointerException" çözmeyecek. Ama haklısın, OP sorularında geri dönüş bildirimini unuttu (gerçek kodunda değil). – jelies

+1

Gerçekten. Kod parçasını düzenledim. –

+0

Eğer bu işe yararsa, cevabı doğrulayabilir misiniz lütfen? – Tsunaze