13.13.用文件存储和MainServices实现页面跳转问题

来源:互联网 发布:重庆大学网络客户端 编辑:程序博客网 时间:2024/04/29 16:52
一、编写SharedPreferenceUtil类(读写操作)、定义一个Static的nowUser作为当前用户,在MainService和LoginActivivty中都要创建
二、在Login页面init()之前判断,是否含有文件


     Intent service=new Intent(this,MainService.class);         //开启service
     startService(service);
     MainService.newActivity(this);                             //将本活动加入到活动集合中
     nowUser= SharedPreferenceUtil.getLoginUser(getApplicationContext());
     if(nowUser!=null){
            //跳转
            Intent intent=new Intent(LoginActivity.this,HomeActivity.class);         //有直接跳转到主页面
            startActivity(intent);


      }else{
            init();


      }


三、获取ListView上点击的当前对象
   *********************** public  static UserInfo userInfo;
        view = LayoutInflater.from(context).inflate(R.layout.user_selected_templete, null);//加载布局文件,返回v对象
        //  ImageView img_head= (ImageView) view.findViewById(R.id.img_user_head);//创建实例对象
        TextView text_name = (TextView) view.findViewById(R.id.text_user_name);
    *******************     userInfo = userInfos.get(position);//获取某个用户,这里才有获取某个单独用户的例子
        //   img_head.setImageDrawable(userInfo.getUserIcon());//setImageDrawable是img_head自己独有的
        text_name.setText(userInfo.getUserId());//在Adapter中设置用户的ID
        //上面还没有获取用户的头像,姓名


四、在TextView的中获取nowUser对象
   TextView text_name = (TextView) view.findViewById(R.id.text_user_name);//listview中text控件的实例对象
                        textViewUserId.setText(text_name.getText());
           **************             nowUser=UserAdapter.userInfo;//从适配器中获取当前用户对象
                        dialog.dismiss();


五、在登录按钮中,创建一个Task对象,放入操作的case和当前用户,然后让MainService执行,页面登录操作
        SharedPreferenceUtil.saveLoginUser(this,nowUser);//保存登录信息
                Map<String ,Object> taskParams=new HashMap<String, Object>() ;        // 创建HashMap用于存放task要的参数
                taskParams.put("user",nowUser);//将现在登录的用户保存到taskparams中
                Task task=new Task(Task.WEIBO_LOGIN,taskParams);
                MainService.newTask(task);                      //加入任务




六、在doTask中获取当前用户nowuser,并且对微博进行授权、MainService中的操作就是在Handler中处理,实现刷新UI,调用refresh()方法,实现页面跳转


   //doTask(Task t)处理业务逻辑
    private void doTask(Task t){
      //  尽量使用 Message msg = handler.obtainMessage();的形式创建Message.msg.obj = result1;   //msg.obj=?从这里把你想传递的数据放进去就行了
        Message msg=handler.obtainMessage();
        msg.what=t.getTaskId();
        switch (t.getTaskId()){
            case Task.WEIBO_LOGIN:
                nowUser= (UserInfo) t.getTaskParams().get("user");
                weibo.setToken(nowUser.getToken(),nowUser.getTokenSecret());




                break;
            default:
                break;


        }
        handler.sendMessage(msg);


    }




    //异步处理
    private Handler handler=new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            switch (msg.what){
                case Task.WEIBO_LOGIN:     //用户登录
                    //跟新UI
                    Log.d("使用了Service","---------------------->");
                    IWeiBoActivity activity= (IWeiBoActivity) getActivityByName("LoginActivity");//根据活动名,获取当前活动对象
                    activity.refresh(msg.obj);
                    break;
                default:
                    break;


            }
        }
    };


最后、LoginActivity中的refresh()方法
   @Override
    public void refresh(Object...params) { //Object...params相当于长度可变的对象数组
        //在这里执行相应的UI操作,setText(params[0].toString())


        Intent intent=new Intent(LoginActivity.this,HomeActivity.class);
        startActivity(intent);
    }
0 0
原创粉丝点击