1. 按照官方文档,在gradle中引用xUtils3的包,在gradle4.4中,需要这样引用,不能完全按照官方的compile。用关键字api来引用
dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'com.android.support:appcompat-v7:27.1.1' implementation 'com.android.support.constraint:constraint-layout:1.1.0' api 'org.xutils:xutils:3.5.0' //关键引入 testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:1.0.2' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' }
2.独立写一个类,继承Application,并且在配置文件中,配置此文件。如写一个类名叫MyApp,并且写注入代码,x.Ext.init(this)和x.Ext.setDebug(true)日志
public class MyApp extends Application { @Override public void onCreate() { super.onCreate(); x.Ext.init(this); // 初始化 x.Ext.setDebug(true); //日志输出 } }
在manifest文件中,用name来引用此类,这样就可以在所有的这个app中注入。
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="cn.bazi.myapplication"> <application android:name=".MyApp" //关键引入类名 android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
3.三个注解文件,第一个是主布局,第二个是控件,第三个是控件方法。
在布局文件中,使用@ContentView,在控件上用@ViewInject,在方法上用@Event。
4.在Activity文件中,使用x.view().inject(this);进行注入。
代码如下
@ContentView(R.layout.activity_main) public class MainActivity extends AppCompatActivity { @ViewInject(R.id.btn_test) private Button btn; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); x.view().inject(this); //注入 } @Event(value = R.id.btn_test,type = View.OnClickListener.class) private void btn_method(View view){ Toast.makeText(getApplicationContext(),"ahahahahah",Toast.LENGTH_LONG).show(); } }
布局文件如下
<Button android:id="@+id/btn_test" android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="test tt" />
--------------------------------------------------------
主要碰到的难点有两个,一是在gradle中,开始用的implementation 不是用的api,导致导包不正常。
二是布局文件没有加@ContentView注解。