请大神指教!shareSDK第三方登录,返回了用户登录信息,但是一直报空指针异常,可我把返回值打印,发现有值呢,这是什么原因

fdssr 发布于 2015/10/30 09:16
阅读 1K+
收藏 0

这是我的代码,先点击一个图片按钮,然后跳转到授权界面,当授权完成的时候,再把值返回在这个类里面,但是运行的时候一直报这句left_menu_fragment_textview.setText(userInfo.getUserName());是空指针异常,这是怎么回事


public class LeftMenuFragment extends BaseFragment {

    private ImageButton left_menu_fragment_imagebutton;
    private ListView left_menu_fragment_listview;
    private String[] itemname = new String[] { "设置文字大小", "收藏", "检查更新" };
    /************************************ 后面增加的方法 **********************************************/
    private OnLoginListener signupListener;
    private Platform platform;

    private String picturePath;
    private UserInfo userInfo = new UserInfo();
    /** 加载用户icon */
    private static final int LOAD_USER_ICON = 2;
    /** 图片名字 */
    private static final String PICTURE_NAME = "userIcon.jpg";
    private TextView left_menu_fragment_textview;

    /**********************************************************************************/

    @Override
    public View initview() {
        View view = View.inflate(mActivity, R.layout.left_menu_fragment, null);

        left_menu_fragment_imagebutton = (ImageButton) view
                .findViewById(R.id.left_menu_fragment_imagebutton);
        left_menu_fragment_listview = (ListView) view
                .findViewById(R.id.left_menu_fragment_listview);
        left_menu_fragment_textview = (TextView) view
                .findViewById(R.id.left_menu_fragment_textview);
        left_menu_fragment_listview.setAdapter(new myListAdapter());
        left_menu_fragment_imagebutton
                .setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View v) {
                        Log.i("pan", "已经点击跳转界面");
                        Intent intent = new Intent();
                        intent.setClass(mActivity,
                                AuthorizationLoginActivity.class);
                        mActivity.startActivity(intent);

                    }
                });
        return view;
    }

    /**
     * 初始化数据
     */
    @Override
    public void initData() {

        if (platform != null) {
            userInfo.setUserIcon(platform.getDb().getUserIcon());
            userInfo.setUserName(platform.getDb().getUserName());

            Log.i("pan", "leftMenuFragment中的username" + userInfo.getUserName());
            Log.i("pan", "leftMenuFragment中的icon" + userInfo.getUserIcon());

            if (userInfo.getUserName() != null) {
                Log.i("pan", "leftMenuFragment中的username222222" + userInfo.getUserName());

                left_menu_fragment_textview.setText(userInfo.getUserName());
            }
        }
        if (!TextUtils.isEmpty(userInfo.getUserIcon())) {
            Log.i("pan", "执行进入了获取icon方法吗");
            loadIcon();
        }
        // 初始化照片保存地址
        if (Environment.getExternalStorageState().equals(
                Environment.MEDIA_MOUNTED)) {
            String thumPicture = Environment.getExternalStorageDirectory()
                    .getAbsolutePath()
                    + "/"
                    + mActivity.getPackageName()
                    + "/download";
            File pictureParent = new File(thumPicture);
            File pictureFile = new File(pictureParent, PICTURE_NAME);

            if (!pictureParent.exists()) {
                pictureParent.mkdirs();
            }
            try {
                if (!pictureFile.exists()) {
                    pictureFile.createNewFile();
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            picturePath = pictureFile.getAbsolutePath();
            Log.e("picturePath ==>>", picturePath);
        } else {
            Log.e("change user icon ==>>", "there is not sdcard!");
        }

        // Bundle bundle = mActivity.getIntent().getExtras();
        // if (bundle != null) {
        //
        // Log.i("pan", "LeftMenuFragment中的res值:" + bundle.get("myMap"));
        // Map<String, Object> hashmap = (Map<String, Object>)
        // bundle.getSerializable("myMap");
        // String name = (String) hashmap.get("nickname");
        // Log.i("pan", "LeftMenuFragment中的res值:" + hashmap);
        // Log.i("pan", "LeftMenuFragment中的name值:" + name);
        // }
    }

    private Handler handler = new Handler() {
        public void handleMessage(Message msg) {
            switch (msg.what) {

            case LOAD_USER_ICON:
                left_menu_fragment_imagebutton.setImageURI(Uri
                        .parse(picturePath));
                break;
            default:
                break;
            }
        };
    };

    /**
     * 加载头像
     */
    public void loadIcon() {
        final String imageUrl = platform.getDb().getUserIcon();
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    URL picUrl = new URL(imageUrl);
                    Bitmap userIcon = BitmapFactory.decodeStream(picUrl
                            .openStream());
                    FileOutputStream b = null;
                    try {
                        b = new FileOutputStream(picturePath);
                        userIcon.compress(Bitmap.CompressFormat.JPEG, 100, b);// 把数据写入文件
                    } catch (FileNotFoundException e) {
                        e.printStackTrace();
                    } finally {
                        try {
                            b.flush();
                            b.close();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                    userInfo.setUserIcon(picturePath);

                    Message msg = new Message();
                    msg.what = LOAD_USER_ICON;
                    // UIHandler.sendMessage(msg);

                    handler.sendMessage(msg);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }).start();
    }

    public boolean handleMessage(Message msg) {
        switch (msg.what) {

        case LOAD_USER_ICON:
            left_menu_fragment_imagebutton.setImageURI(Uri.parse(picturePath));
            break;
        default:
            break;
        }
        return false;
    }

    /**
     * listview的适配器
     *
     * @author Administrator
     *
     */
    class myListAdapter extends BaseAdapter {

        private TextView text;

        @Override
        public int getCount() {
            // TODO Auto-generated method stub
            return itemname.length;
        }

        @Override
        public Object getItem(int position) {
            return itemname[position];
        }

        @Override
        public long getItemId(int position) {
            return position;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            if (convertView == null) {
                convertView = View.inflate(mActivity,
                        R.layout.left_menu_fragment_listview, null);
            }
            text = (TextView) convertView
                    .findViewById(R.id.left_menu_fragment_listview_textview);
            text.setText(itemname[position]);
            return convertView;
        }

    }

    /****************************************************************************************/

    /** 设置授权回调,用于判断是否进入注册 */
    public void setOnLoginListener(OnLoginListener l) {
        this.signupListener = l;
    }

    public void setPlatform(String platName) {
        Log.i("pan", "platName的值为:" + platName);
        platform = ShareSDK.getPlatform(platName);
        initData();

    }


这下面是打印的值:

10-30 09:11:52.480: I/pan(8062): leftMenuFragment中的username额路的快乐
10-30 09:11:52.480: I/pan(8062): leftMenuFragment中的iconhttp://q.qlogo.cn/qqapp/100371282/C9F7933B7F1457206982CCF2EC3548F9/40
10-30 09:11:52.480: I/pan(8062): leftMenuFragment中的username222222额路的快乐
10-30 09:11:52.480: I/pan(8062): 执行进入了获取icon方法吗



这下面是错误的提示:

10-30 09:11:52.490: A/MobUncaughtExceptionHandler(8062): null
10-30 09:11:52.490: A/MobUncaughtExceptionHandler(8062): java.lang.NullPointerException
10-30 09:11:52.490: A/MobUncaughtExceptionHandler(8062):     at com.pan.foucstoday.fragment.LeftMenuFragment.initData(LeftMenuFragment.java:121)
10-30 09:11:52.490: A/MobUncaughtExceptionHandler(8062):     at com.pan.foucstoday.fragment.LeftMenuFragment.setPlatform(LeftMenuFragment.java:270)
10-30 09:11:52.490: A/MobUncaughtExceptionHandler(8062):     at com.pan.foucstoday.AuthorizationLoginActivity.handleMessage(AuthorizationLoginActivity.java:201)
10-30 09:11:52.490: A/MobUncaughtExceptionHandler(8062):     at com.mob.tools.utils.UIHandler.handleMessage(Unknown Source)
10-30 09:11:52.490: A/MobUncaughtExceptionHandler(8062):     at com.mob.tools.utils.UIHandler.access$000(Unknown Source)
10-30 09:11:52.490: A/MobUncaughtExceptionHandler(8062):     at com.mob.tools.utils.UIHandler$1.handleMessage(Unknown Source)
10-30 09:11:52.490: A/MobUncaughtExceptionHandler(8062):     at android.os.Handler.dispatchMessage(Handler.java:98)
10-30 09:11:52.490: A/MobUncaughtExceptionHandler(8062):     at android.os.Looper.loop(Looper.java:136)
10-30 09:11:52.490: A/MobUncaughtExceptionHandler(8062):     at android.app.ActivityThread.main(ActivityThread.java:5114)
10-30 09:11:52.490: A/MobUncaughtExceptionHandler(8062):     at java.lang.reflect.Method.invokeNative(Native Method)
10-30 09:11:52.490: A/MobUncaughtExceptionHandler(8062):     at java.lang.reflect.Method.invoke(Method.java:515)
10-30 09:11:52.490: A/MobUncaughtExceptionHandler(8062):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
10-30 09:11:52.490: A/MobUncaughtExceptionHandler(8062):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602)
10-30 09:11:52.490: A/MobUncaughtExceptionHandler(8062):     at dalvik.system.NativeStart.main(Native Method)
10-30 09:11:52.490: E/AndroidRuntime(8062): FATAL EXCEPTION: main
10-30 09:11:52.490: E/AndroidRuntime(8062): Process: com.pan.foucstoday, PID: 8062
10-30 09:11:52.490: E/AndroidRuntime(8062): java.lang.NullPointerException
10-30 09:11:52.490: E/AndroidRuntime(8062):     at com.pan.foucstoday.fragment.LeftMenuFragment.initData(LeftMenuFragment.java:121)
10-30 09:11:52.490: E/AndroidRuntime(8062):     at com.pan.foucstoday.fragment.LeftMenuFragment.setPlatform(LeftMenuFragment.java:270)
10-30 09:11:52.490: E/AndroidRuntime(8062):     at com.pan.foucstoday.AuthorizationLoginActivity.handleMessage(AuthorizationLoginActivity.java:201)
10-30 09:11:52.490: E/AndroidRuntime(8062):     at com.mob.tools.utils.UIHandler.handleMessage(Unknown Source)
10-30 09:11:52.490: E/AndroidRuntime(8062):     at com.mob.tools.utils.UIHandler.access$000(Unknown Source)
10-30 09:11:52.490: E/AndroidRuntime(8062):     at com.mob.tools.utils.UIHandler$1.handleMessage(Unknown Source)
10-30 09:11:52.490: E/AndroidRuntime(8062):     at android.os.Handler.dispatchMessage(Handler.java:98)
10-30 09:11:52.490: E/AndroidRuntime(8062):     at android.os.Looper.loop(Looper.java:136)
10-30 09:11:52.490: E/AndroidRuntime(8062):     at android.app.ActivityThread.main(ActivityThread.java:5114)
10-30 09:11:52.490: E/AndroidRuntime(8062):     at java.lang.reflect.Method.invokeNative(Native Method)
10-30 09:11:52.490: E/AndroidRuntime(8062):     at java.lang.reflect.Method.invoke(Method.java:515)
10-30 09:11:52.490: E/AndroidRuntime(8062):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
10-30 09:11:52.490: E/AndroidRuntime(8062):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602)
10-30 09:11:52.490: E/AndroidRuntime(8062):     at dalvik.system.NativeStart.main(Native Method)


加载中
0
寒天
寒天
left_menu_fragment_textview 是null
寒天
寒天
回复 @fdssr : R.layout.left_menu_fragment 有没有对应的TextView的ID
f
fdssr
回复 @寒天 : 我的逻辑是在该类中,用initview和initData两个方法,在initview中有个图片按钮,点击后跳转到授权界面,当授权完成后,把用户授权的username,和icon返回这个类中,然后再setPlatform中获取,以及调用initData初始化数据
f
fdssr
回复 @寒天 : 我查了一下,发现是为空,但是我在setplatform中调用initview方法,则提示View view = View.inflate(mActivity(), R.layout.left_menu_fragment, null);为空!
寒天
寒天
回复 @fdssr : 断点跟踪一下,查看left_menu_fragment.xml里有没有对应的ID
f
fdssr
不是空啊,我已经left_menu_fragment_textview = (TextView) view .findViewById(R.id.left_menu_fragment_textview); 难道我这个写错了?
返回顶部
顶部