के साथ काम नहीं कर रहा है इसलिए मेरे पास इस गतिविधि के लिए अलग-अलग लेआउट हैं।इंजेक्शनव्यू (रोबोगुइस) एकाधिक लेआउट
और मेरे पास अलग-अलग वर्ग हैं जो प्रत्येक खुले हैं और लेआउट के साथ अपनी बात करते हैं।
मैं इन कक्षाओं को @Inject के माध्यम से गतिविधि में इंजेक्ट करता हूं। यह सब बिना किसी समस्या के है।
लेकिन जब मैं सक्रिय लेआउट में मौजूद नियंत्रणों में से एक पर @InjectView का उपयोग करने का प्रयास करता हूं तो मुझे एक त्रुटि मिलती है।
11-02 19: 17: 31.086: त्रुटि/AndroidRuntime (1326): java.lang.NullPointerException: की वजह से वर्ग be.baes.notes.View.EditNoteImpl में शून्य मान इंजेक्षन नहीं कर सकते .saveButton जब फ़ील्ड @Nullable
यह कोड होगा।
public class EditNoteImpl implements EditNote {
@Inject CancelEditNoteClickListener cancelEditNoteClickListener;
@Inject SaveNoteClickListener saveNoteClickListener;
@Inject Provider<Activity> activity;
@InjectView(R.id.saveButton) Button saveButton;
/* (non-Javadoc)
* @see be.baes.notes.EditNote#activateEditNote()
*/
@Override
public void activateEditNote()
{
activity.get().setContentView(R.layout.editnote);
this.saveButton.setOnClickListener(saveNoteClickListener);
}
}
हालांकि मैं ऐसा कर सकता हूं।
public class EditNoteImpl implements EditNote {
@Inject CancelEditNoteClickListener cancelEditNoteClickListener;
@Inject SaveNoteClickListener saveNoteClickListener;
@Inject Provider<Activity> activity;
private Button saveButton;
/* (non-Javadoc)
* @see be.baes.notes.EditNote#activateEditNote()
*/
@Override
public void activateEditNote()
{
activity.get().setContentView(R.layout.editnote);
saveButton = (Button)activity.get().findViewById(R.id.saveButton);
this.saveButton.setOnClickListener(saveNoteClickListener);
}
}
क्या ऐसा करने का कोई बेहतर तरीका है?
क्या कोई कारण है कि बटन @ Nullable बनाने का विकल्प नहीं है? –
मैंने कोशिश की, लेकिन यह बटन को इंजेक्ट नहीं करता है। – chrissie1
क्या आप RoboGuice 2.0 का उपयोग कर रहे हैं? यह * 2.0 – emmby