小野野野 2021-12-15 13:38 采纳率: 0%
浏览 38
已结题

Android 初始化数据问题

问题遇到的现象和发生背景

当我第一次在模拟器上装了应用,打开时

img

问题相关代码,请勿粘贴截图

这是活动里的代码

@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

问题遇到的现象和发生背景

当我点击箭头时,跳转到另一个界面

img

问题相关代码,请勿粘贴截图
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时,都显示出来了

img

我的解答思路和尝试过的方法

我使用过主线程和子线程,不成功。我的领导说是页面刷新问题,我觉得不是,他给我的感觉就是想迷路的人,只找到了一个宝藏。

我想要达到的结果

我想初始化能显示出来,我想知道这个是什么原因!

  • 写回答

4条回答 默认 最新

  • pumpkin的玄学 2021-12-15 13:43
    关注

    打断点或者log啊 看看第一次的时候 是否真的从数据库捞到东西了

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 12月15日
  • 创建了问题 12月15日

悬赏问题

  • ¥15 抖音登录系统繁忙 无法登录,谁能解决奖励2W
  • ¥15 公司内部的信息化建设应该考哪些证书,学习
  • ¥15 编写泥浆密度在管路中变化,管路瞬变流计算根据上述描述表示泥浆密度沿着管路的长度方向在不断变化,如何来表示泥浆密度随管路流速的变化
  • ¥15 python程序怎么关闭console窗口,仍然保持程序运行
  • ¥15 sap for java
  • ¥15 如何添加系统级别的屏幕边框
  • ¥100 图像处理,如何优化使得清晰
  • ¥15 请求看看这个仿真电路哪里有问题?
  • ¥100 关于python拓展屏使用pyautogui.screenshot无法截图的问题
  • ¥15 有偿求答 无导出权限怎么快速导出企业微信微文档