欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

Dagger简单Demo

发布时间:2025/3/21 编程问答 57 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Dagger简单Demo 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

Dagger实现依赖注入,为了解决程序直接的耦合度。
本例子主要为了实现简单的依赖注入

配置:
Project级别的build.gradle

// Top-level build file where you can add configuration options common to all sub-projects/modules.buildscript {repositories {jcenter()}dependencies {classpath 'com.android.tools.build:gradle:2.1.2'classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'// NOTE: Do not place your application dependencies here; they belong// in the individual module build.gradle files} }allprojects {repositories {jcenter()} }task clean(type: Delete) {delete rootProject.buildDir }

Module级别的build.gradle

apply plugin: 'com.android.application' apply plugin: 'android-apt'android {compileSdkVersion 23buildToolsVersion "23.0.3"defaultConfig {applicationId "com.android.demo"minSdkVersion 17targetSdkVersion 23versionCode 1versionName "1.0"}buildTypes {release {minifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'}} }dependencies {compile fileTree(dir: 'libs', include: ['*.jar'])testCompile 'junit:junit:4.12'compile 'com.android.support:appcompat-v7:23.4.0'compile 'com.jakewharton:butterknife:8.0.1'apt 'com.jakewharton:butterknife-compiler:8.0.1'compile 'com.squareup.dagger:dagger:1.2.5'apt 'com.squareup.dagger:dagger-compiler:1.2.5' }



布局

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"><TextView android:id="@+id/message"android:layout_width="wrap_content"android:layout_height="wrap_content" /><Button android:id="@+id/btn"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_below="@id/message"android:layout_margin="10dp"android:text="开始"/> </RelativeLayout>



Student.java

package com.android.demo;/*** 学生*/ public class Student {String id;String name;public void setId(String id) {this.id = id;}public void setName(String name) {this.name = name;}public String getId() {return id;}public String getName() {return name;}public Student(){}}


AppModule.java

package com.android.demo;import javax.inject.Singleton;import dagger.Module; import dagger.Provides;@Module(injects = {MainActivity.class},complete = false ,library = true) public class AppModule {@Provides @Singletonpublic Student provideStudent(){Student student = new Student();student.setId("2014");student.setName("WiseClown");return student;} }


package com.android.demo;import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.TextView;import javax.inject.Inject;import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; import dagger.ObjectGraph;public class MainActivity extends AppCompatActivity {@InjectStudent student;@BindView(R.id.message)TextView message;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);ObjectGraph objectGraph = ObjectGraph.create(AppModule.class);objectGraph.inject(this);ButterKnife.bind(this);}@OnClick(R.id.btn)public void submit(View view){message.setText(student.getId()+"\n"+student.getName());}}

分析:
在MainActivity中需要Student类的实例,所以通过依赖注入器将Student类在AppModule中实例化后再注入MainActivity中。

总结

以上是生活随笔为你收集整理的Dagger简单Demo的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。