问题遇到的现象和发生背景
当我第一次在模拟器上装了应用,打开时
问题相关代码,请勿粘贴截图
这是活动里的代码
@Override
protected void loadData() {
if(!isPrepared || !isVisible){
DBUser dbUser=new DBUser();
dbUser.setContext(getActivity());
dbUser.setCode(agent);
nickName=UserOperate.getName(dbUser);
mobile=UserOperate.getMobile(dbUser);
KLog.a(nickName+" "+mobile);
DBFriend dbFriend=new DBFriend();
dbFriend.setContext(getActivity());
dbFriend.setUser_id(UserOperate.getId(dbUser));
rcount= FriendOperate.FriCount(dbFriend);
KLog.a(rcount+"");
DBObjStock dbObjStock=new DBObjStock();
dbObjStock.setContext(getActivity());
dbObjStock.setUser_id(UserOperate.getId(dbUser));
bcount= ObjStockOperate.DrugCount(dbObjStock);
}
tv_name.setText(nickName);
tv_mobile.setText(mobile);
tv_rcount.setText(String.valueOf(rcount));
tv_bcount.setText(String.valueOf(bcount));
}
这是查询昵称的代码
public static String getName(DBUser dbUser){
String name=null;
DataBase dataBase=new DataBase(dbUser.getContext(),"MDS.db",null,1);
SQLiteDatabase db=dataBase.getReadableDatabase();
String sql="select nick_name from user where code=?";
Cursor cursor=db.rawQuery(sql,new String[]{dbUser.getCode()});
if(cursor.moveToFirst()){
name=cursor.getString(cursor.getColumnIndex("nick_name"));
}
db.close();
KLog.a(name);
return name;
}
这是查询手机的代码
public static String getMobile(DBUser dbUser){
String mobile=null;
DataBase dataBase=new DataBase(dbUser.getContext(),"MDS.db",null,1);
SQLiteDatabase db=dataBase.getReadableDatabase();
String sql="select mobile from user where code=?";
Cursor cursor=db.rawQuery(sql,new String[]{dbUser.getCode()});
if(cursor.moveToFirst()){
mobile=cursor.getString(cursor.getColumnIndex("mobile"));
}
db.close();
return mobile;
}
这是查询好友总条数的代码
public static int FriCount(DBFriend dbFriend){
int i=0;
DataBase dataBase=new DataBase(dbFriend.getContext(), "MDS.db",null,1);
SQLiteDatabase db=dataBase.getReadableDatabase();
String sql="select count(*) from friend where user_id=?";
Cursor cursor=db.rawQuery(sql,new String[]{String.valueOf(dbFriend.getUser_id())});
if(cursor.moveToFirst())
i=cursor.getInt(cursor.getColumnIndex("count(*)"));
db.close();
return i;
}
这是查询药品总条数的代码
public static int DrugCount(DBObjStock dbObjStock){
int i=0;
DataBase dataBase=new DataBase(dbObjStock.getContext(),"MDS.db",null,1);
SQLiteDatabase db=dataBase.getReadableDatabase();
String sql="select count(*) from obj_stock where user_id=?";
Cursor cursor=db.rawQuery(sql,new String[]{String.valueOf(dbObjStock.getUser_id())});
if(cursor.moveToFirst())
i=cursor.getInt(cursor.getColumnIndex("count(*)"));
db.close();
return i;
}
运行结果及报错内容
运行结果除了手机号有值,昵称是null,条数的都是0
问题遇到的现象和发生背景
当我点击箭头时,跳转到另一个界面
问题相关代码,请勿粘贴截图
Thread thread=new Thread(new Runnable() {
@Override
public void run() {
DBUser dbUser=new DBUser();
dbUser.setContext(EditActivity.this);
dbUser.setCode(agent);
nickName=UserOperate.getName(dbUser);
Message message=new Message();
message.what=1;
handler.sendMessage(message);
}
});
private Handler handler=new Handler(new Handler.Callback() {
@Override
public boolean handleMessage(@NonNull Message msg) {
switch (msg.what){
case 1:
tv_name.setText(nickName);
tv_code.setText(agent);
}
return false;
}
});
查询代码和上述一样,但是就显示出昵称和手机号。
问题遇到的现象和发生背景
当我第二次打开app时,都显示出来了
我的解答思路和尝试过的方法
我使用过主线程和子线程,不成功。我的领导说是页面刷新问题,我觉得不是,他给我的感觉就是想迷路的人,只找到了一个宝藏。
我想要达到的结果
我想初始化能显示出来,我想知道这个是什么原因!