日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

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

编程问答

xutils找id空指针_xUtils更新到3.0后的基本使用规则

發布時間:2024/7/23 编程问答 86 豆豆
生活随笔 收集整理的這篇文章主要介紹了 xutils找id空指针_xUtils更新到3.0后的基本使用规则 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

說實話,對于xUtils,是我最近才用到的開發框架(也是剛接觸),對于其功能不得不說,簡化了很多的開發步驟,可以說是非常好的開發工具,但是其最近更新到3.0也沒有解決加載自定義ImageView報錯的問題。

我總是喜歡用一些最新的東西,xUtils 3.0才剛更新,是一次比較大的重構,對于百度到的使用規則,基本都是3.0以前的,使得用3.0的開發者需要求解用法的時候,遇到許多阻礙,故此在這里簡單介紹xUtils 3.0的使用規則。關于怎么導入功能,其實并不是本文的內容,不過在此文最后一節簡單講解了一下導入的方式。

1.xUtils中的IOC框架

使用xUtils的第一步就是必須創建自己的Application類,代碼如下:

public class LYJApplication extends Application {

@Override

public void onCreate() {

super.onCreate();

x.Ext.init(this);//Xutils初始化

}

}

在AndroidManifest.xml的application標簽中添加如下代碼:

android:name=”.LYJApplication”

這樣初始化就算完成了。

使用IOC框架的代碼如下:

import org.xutils.view.annotation.ContentView;

import org.xutils.view.annotation.Event;

import org.xutils.view.annotation.ViewInject;

import org.xutils.x;

@ContentView(value = R.layout.activity_main)

public class MainActivity extends AppCompatActivity {

@ViewInject(value = R.id.mybut)

private Button mybut;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

x.view().inject(this);

}

@Event(value = R.id.mybut,type = View.OnClickListener.class)

private void onButtonClick(View v){

switch (v.getId()){

case R.id.mybut:

Toast.makeText(this,"你好我是Xutils的IOC功能",Toast.LENGTH_SHORT).show();

break;

}

}

}

需要解釋的以下幾點:

其一:使用IOC必須全部為私有,不然無效,這里就做演示了,不信你可以把用到IOC框架的注解的成員變量及方法全部換成public ,那么全部會無效,當然除了ContentView例外。

其二,所有用到IOC成員變量,使用的時候,必須在x.view().inject(this)后,如果寫在前面,那么程序會崩潰。

2.xUtils加載圖片功能

現在我們需要設置兩個權限,如下:

接下來就是加載網絡圖片到imageView中:

也可以設置參數:

ImageOptions imageOptions = new ImageOptions.Builder()

.setSize(DensityUtil.dip2px(120), DensityUtil.dip2px(120))//圖片大小

.setRadius(DensityUtil.dip2px(5))//ImageView圓角半徑

.setCrop(true)// 如果ImageView的大小不是定義為wrap_content, 不要crop.

.setImageScaleType(ImageView.ScaleType.CENTER_CROP)

.setLoadingDrawableId(R.mipmap.ic_launcher)//加載中默認顯示圖片

.setFailureDrawableId(R.mipmap.ic_launcher)//加載失敗后默認顯示圖片

.build();

x.image().bind(image, "http://pic.baike.soso.com/p/20090711/20090711101754-314944703.jpg",imageOptions);

你也可以將第2個參數設置為圖片文件路徑,那么將從SD卡中加載圖片。

3.xUtils操作數據庫

我們都知道,一個App中操作數據庫的地方有很多,就像是否登錄一樣,有些地方必須登錄后才能操作,那么肯定是全局變量,所以,必須將數據庫的初始化放在Application,且必須提供獲取數據庫的方法,使得在應用程序的任何地方都可以直接獲取數據庫,并操作數據庫,不然重復的獲取與釋放只能增加內存無謂的消耗。

初始化數據庫:

public class LYJApplication extends Application {

private DbManager.DaoConfig daoConfig;

public DbManager.DaoConfig getDaoConfig() {

return daoConfig;

}

@Override

public void onCreate() {

super.onCreate();

x.Ext.init(this);//Xutils初始化

daoConfig = new DbManager.DaoConfig()

.setDbName("lyj_db")//創建數據庫的名稱

.setDbVersion(1)//數據庫版本號

.setDbUpgradeListener(new DbManager.DbUpgradeListener() {

@Override

public void onUpgrade(DbManager db, int oldVersion, int newVersion) {

// TODO: ...

// db.addColumn(...);

// db.dropTable(...);

// ...

}

});//數據庫更新操作

}

}

上面的注釋明了,有必要說明的一點是setDbDir(new File(“/sdcard”)),可以將數據庫存儲在你想存儲的地方,如果不設置,那么數據庫默認存儲在/data/data/你的應用程序/database/xxx.db下。這里我們就默認放在應用程序下。

我們首先創建一個實體類,如下:

@Table(name="lyj_person")

public class LYJPerson {

@Column(name = "id", isId = true)

private int id;

@Column(name = "name")

private String name;

@Column(name = "age")

private String age;

public String getAge() {

return age;

}

public void setAge(String age) {

this.age = age;

}

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

}

通過實體類可以直接操作數據庫。

我們在Application中加入如下代碼,向數據庫添加數據:

DbManager db = x.getDb(daoConfig);

LYJPerson person1=new LYJPerson();

person1.setName("liyuanjinglyj");

person1.setAge("23");

LYJPerson person2=new LYJPerson();

person2.setName("xutilsdemo");

person2.setAge("56");

try {

db.save(person1);

db.save(person2);

} catch (DbException e) {

e.printStackTrace();

}

在Activity中操作獲取數據庫數據的代碼如下:

DbManager db = x.getDb(((LYJApplication)getApplicationContext()).getDaoConfig());

try {

List<LYJPerson> lyjPersons=db.selector(LYJPerson.class).findAll();

for (int i=0;i<lyjPersons.size();i++){

Log.i("liyuanjinglyj","LYJPerson"+i+".name="+lyjPersons.get(i).getName());

Log.i("liyuanjinglyj","LYJPerson"+i+".name="+lyjPersons.get(i).getAge());

}

} catch (DbException e) {

e.printStackTrace();

}

那么肯定會得到如下結果:

4.xUtils的網絡請求

Android規定UI線程是不能涉及網絡任務的,所以,這里主要簡單介紹Xutils的異步網絡請求,同步的自行探究。

使用格式如下:

RequestParams params = new RequestParams("http://blog.csdn.net/mobile/experts.html");

x.http().get(params, new Callback.CommonCallback<String>() {

@Override

public void onSuccess(String result) {

Document doc = Jsoup.parse(result);

Element div = doc.select("div.list_3").get(0);

Elements imgs = div.getElementsByTag("img");

for (int i = 0; i < imgs.size(); i++) {

Element img = imgs.get(i);

Log.i("liyuanjinglyj",img.attr("alt"));

}

}

@Override

public void onError(Throwable ex, boolean isOnCallback) {

}

@Override

public void onCancelled(Callback.CancelledException cex) {

}

@Override

public void onFinished() {

}

});

這里獲取的是CSDN移動博客專家的HTML頁面信息,看看下面的日志,就知道Xutils網絡功能還是很強大的。

本文最后附帶了一下粗略模仿CSDN APP的源碼,有意者可以下載看看,里面用到另一個開發框架,我用來專門處理圖片的(afinal)。都說xUtils是afinal的進化版,不過在圖片方面,我們覺得xUtils還有點不足。

5.導入xUtils工程到Android Studio

下載地址如下:

㈠將下載的工程復制到Project目錄下:

㈡添加到settings.gradle文件:

include ‘:app’,':xutils’

㈢編譯到工程中

dependencies {

compile fileTree(dir: 'libs', include: ['*.jar'])

compile 'com.android.support:appcompat-v7:23.0.1'

compile project(':xutils')

}

㈣將xutils文件夾下的build.gradle中的版本與最低版本調整到與創建工程一致

compileSdkVersion 23

buildToolsVersion "23.0.1"

defaultConfig {

minSdkVersion 15

targetSdkVersion 23

versionCode 20151224

versionName version

}

㈤添加如下代碼到build.gradle(Project:XutilsDemo)中

dependencies {

classpath 'com.android.tools.build:gradle:1.3.0'

classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.2'

classpath 'com.github.dcendents:android-maven-gradle-plugin:1.3'

// NOTE: Do not place your application dependencies here; they belong

// in the individual module build.gradle files

}

其中紅色標記為添加的代碼。

點擊Sync now就可以使用xUtils了。

總結

以上是生活随笔為你收集整理的xutils找id空指针_xUtils更新到3.0后的基本使用规则的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。