खोज…


सरल उदाहरण है

RoboGuice एक ऐसा ढाँचा है जो Google की अपनी Guice लाइब्रेरी का उपयोग करते हुए Android के लिए सरलता और निर्भरता इंजेक्शन की सुविधा लाता है।

@ContentView(R.layout.main)
class RoboWay extends RoboActivity { 
    @InjectView(R.id.name)             TextView name; 
    @InjectView(R.id.thumbnail)        ImageView thumbnail; 
    @InjectResource(R.drawable.icon)   Drawable icon; 
    @InjectResource(R.string.app_name) String myName; 
    @Inject                            LocationManager loc; 

    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        name.setText( "Hello, " + myName ); 
    } 
} 

ग्रैडल परियोजनाओं के लिए स्थापना

अपनी पोर बिल्ड फ़ाइल की निर्भरता अनुभाग में निम्नलिखित पोम जोड़ें:

project.dependencies {
    compile 'org.roboguice:roboguice:3.+'
    provided 'org.roboguice:roboblender:3.+'
}

@ कंटेंट व्यू एनोटेशन

@ContentView एनोटेशन का उपयोग गतिविधियों के विकास को कम करने और setContentView स्टेटमेंट को बदलने के लिए किया जा सकता है:

@ContentView(R.layout.myactivity_layout)
public class MyActivity extends RoboActivity {
    @InjectView(R.id.text1) TextView textView;

    @Override
    protected void onCreate( Bundle savedState ) {
        textView.setText("Hello!");
    }
}

@InjectResource एनोटेशन

आप किसी भी प्रकार के संसाधन, स्ट्रिंग्स, एनिमेशन, ड्राएबल्स आदि को इंजेक्ट कर सकते हैं।

किसी गतिविधि में अपने पहले संसाधन को इंजेक्ट करने के लिए, आपको निम्न की आवश्यकता होगी:

  • रोबोएक्टिविटी से इन्हेरिट
  • @InjectResource के साथ अपने संसाधनों का उल्लेख करें

उदाहरण

@InjectResource(R.string.app_name) String name;

@InjectResource(R.drawable.ic_launcher) Drawable icLauncher;

@InjectResource(R.anim.my_animation) Animation myAnimation;

@InjectView एनोटेशन

आप @InjectView एनोटेशन का उपयोग करके किसी भी दृश्य को इंजेक्ट कर सकते हैं:

आपको इसकी आवश्यकता होगी:

  • रोबोएक्टिविटी से इन्हेरिट
  • अपनी सामग्री दृश्य सेट करें
  • @InjectView के साथ अपने विचारों का उल्लेख करें

उदाहरण

@InjectView(R.id.textView1) TextView textView1;

@InjectView(R.id.textView2) TextView textView2;

@InjectView(R.id.imageView1) ImageView imageView1;

रोबोगुइस का परिचय

RoboGuice एक ऐसा ढांचा है जो Google की अपनी Guice लाइब्रेरी का उपयोग करके एंड्रॉइड पर निर्भरता इंजेक्शन की सरलता और आसानी लाता है।

RoboGuice 3 आपके एप्लिकेशन कोड को धीमा कर देता है। कम कोड का मतलब है बग के लिए कम अवसर। यह आपके कोड का अनुसरण करना आसान बनाता है - अब आपका कोड एंड्रॉइड प्लेटफ़ॉर्म के यांत्रिकी के साथ कोडित नहीं है, लेकिन अब यह आपके एप्लिकेशन के लिए अद्वितीय वास्तविक तर्क पर ध्यान केंद्रित कर सकता है।

आपको एक विचार देने के लिए, एक विशिष्ट एंड्रॉइड Activity इस सरल उदाहरण पर एक नज़र डालें:

class AndroidWay extends Activity { 
        TextView name; 
        ImageView thumbnail; 
        LocationManager loc; 
        Drawable icon; 
        String myName; 

        public void onCreate(Bundle savedInstanceState) { 
            super.onCreate(savedInstanceState); 
            setContentView(R.layout.main);
            name      = (TextView) findViewById(R.id.name); 
            thumbnail = (ImageView) findViewById(R.id.thumbnail); 
            loc       = (LocationManager) getSystemService(Activity.LOCATION_SERVICE); 
            icon      = getResources().getDrawable(R.drawable.icon); 
            myName    = getString(R.string.app_name); 
            name.setText( "Hello, " + myName ); 
        } 
    }

यह उदाहरण कोड की 19 लाइनें है। यदि आप onCreate() माध्यम से पढ़ने की कोशिश कर रहे हैं, तो आपको केवल एक ही खोजने के लिए बॉयलरप्लेट आरंभीकरण की 5 लाइनों को छोड़ना होगा जो वास्तव में मायने रखता है: name.setText() । और जटिल गतिविधियाँ इस तरह के आरंभीकरण कोड के एक बहुत अधिक के साथ समाप्त हो सकती हैं।

इसकी तुलना उसी ऐप से करें, जो RoboGuice का उपयोग करके लिखा RoboGuice :

 @ContentView(R.layout.main)
    class RoboWay extends RoboActivity { 
        @InjectView(R.id.name)             TextView name; 
        @InjectView(R.id.thumbnail)        ImageView thumbnail; 
        @InjectResource(R.drawable.icon)   Drawable icon; 
        @InjectResource(R.string.app_name) String myName; 
        @Inject                            LocationManager loc; 

        public void onCreate(Bundle savedInstanceState) { 
            super.onCreate(savedInstanceState); 
            name.setText( "Hello, " + myName ); 
        } 
    }

RoboGuice का लक्ष्य आपके कोड को आपके ऐप के बारे में बनाना है, न कि उन सभी इनिशियलाइज़ेशन और जीवनचक्र कोड के बारे में होना चाहिए जो आपको आमतौर पर Android में बनाए रखने होते हैं।

एनोटेशन

@ कंटेंट व्यू एनोटेशन:

@ContentView एनोटेशन का उपयोग गतिविधियों के विकास को कम करने और setContentView स्टेटमेंट को बदलने के लिए किया जा सकता है:

@ContentView(R.layout.myactivity_layout)
    public class MyActivity extends RoboActivity {
        @InjectView(R.id.text1) TextView textView;

        @Override
        protected void onCreate( Bundle savedState ) {
            textView.setText("Hello!");
        }
    }

@InjectResource एनोटेशन:

पहले आपको एक गतिविधि की आवश्यकता होती है जो रोबोएक्टिविटी से विरासत में मिलती है। फिर, यह मानते हुए कि आपके रेस / एनीमेशन फ़ोल्डर में आपके पास एक एनीमेशन my_animation.xml है, अब आप इसे एनोटेशन के साथ संदर्भित कर सकते हैं:

public class MyActivity extends RoboActivity {
    @InjectResource(R.anim.my_animation) Animation myAnimation;
    // the rest of your code
}

@ इंजेक्शन एनोटेशन:

आप सुनिश्चित करें कि आपकी गतिविधि RoboActivity से फैली हुई है और @Inject के साथ अपने सिस्टम सेवा सदस्य को एनोटेट करें। बाकी का काम रॉबोगुइस करेगा।

class MyActivity extends RoboActivity {
    @Inject Vibrator vibrator;
    @Inject NotificationManager notificationManager;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // we can use the instances directly!
        vibrator.vibrate(1000L); // RoboGuice took care of the getSystemService(VIBRATOR_SERVICE)
        notificationManager.cancelAll();

व्यू, रिसोर्सेज, सर्विसेज और अन्य एंड्रॉइड-विशिष्ट चीजों के अलावा, रोबो जीसस प्लेन ओल्ड जावा ऑब्जेक्ट्स को इंजेक्ट कर सकता है। डिफ़ॉल्ट रूप से Roboguice आपके POJO पर कोई तर्क निर्माता नहीं कहेगा

class MyActivity extends RoboActivity {
    @Inject Foo foo; // this will basically call new Foo();
}


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow