Facebook登录的Andr​​oid应用程序崩溃 [英] facebook login android app crashes

查看:174
本文介绍了Facebook登录的Andr​​oid应用程序崩溃的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在code被张贴在这里和应用程序崩溃时的登录按钮被点击与空指针异常在上click.im homefragment一个beginer.please help.logcat的 http://postimg.org/image/6d1qyszkd/

The code is posted here and the app crashes when the login button is clicked with null pointer exception at homefragment on click.im a beginer.please help.logcat http://postimg.org/image/6d1qyszkd/

简单的Facebook类主要是:

simple facebook class basically is :

 public SimpleFacebook()
{
    mSessionStatusCallback = new SessionStatusCallback();
}

public static void initialize(Activity activity)
{
    if (mInstance == null)
    {
        mInstance = new SimpleFacebook();
    }

    mActivity = activity;
}

public static SimpleFacebook getInstance(Activity activity)
{
    if (mInstance == null)
    {
        mInstance = new SimpleFacebook();
    }

    mActivity = activity;
    return mInstance;
}

public static SimpleFacebook getInstance()
{
    return mInstance;
}

进口java.io.IOException异常;

import java.io.IOException;

import java.net.MalformedURLException;

import java.net.URL;
import java.util.List;

import org.json.JSONException;
import org.json.JSONObject;

import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.util.Pair;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import com.parse.GetDataCallback;
import com.sromku.simple.fb.SimpleFacebook;

import com.sromku.simple.fb.Properties;
import com.sromku.simple.fb.SimpleFacebook;
import com.sromku.simple.fb.SimpleFacebook.OnFriendsRequestListener;
import com.sromku.simple.fb.SimpleFacebook.OnLoginListener;
import com.sromku.simple.fb.SimpleFacebook.OnLogoutListener;
import com.sromku.simple.fb.SimpleFacebook.OnProfileRequestListener;
import com.sromku.simple.fb.entities.Profile;
import com.sromku.simple.fb.example.utils.Utils;
import com.sromku.simple.fb.utils.Attributes;
import com.sromku.simple.fb.utils.PictureAttributes;
import com.sromku.simple.fb.utils.PictureAttributes.PictureType;


 public class HomeFragment extends Fragment {

protected static final String TAG = HomeFragment.class.getName();

private SimpleFacebook mSimpleFacebook;


ProgressDialog mProgress;
 Button mButtonLogin;
Button mButtonLogout;
 TextView mTextStatus;


// Login listener
private OnLoginListener mOnLoginListener = new OnLoginListener()
{

    @Override
    public void onFail(String reason)
    {
        mTextStatus.setText(reason);
        Log.w(TAG, "Failed to login");
    }

    @Override
    public void onException(Throwable throwable)
    {
        mTextStatus.setText("Exception: " + throwable.getMessage());
        Log.e(TAG, "Bad thing happened", throwable);
    }

    @Override
    public void onThinking()
    {
        // show progress bar or something to the user while login is happening
        mTextStatus.setText("Thinking...");
    }

    @Override
    public void onLogin()
    {
        // change the state of the button or do whatever you want
        mTextStatus.setText("Logged in");
        loggedInUIState();
        toast("You are logged in");
    }

    @Override
    public void onNotAcceptingPermissions()
    {
        toast("You didn't accept read permissions");
    }
};

// Logout listener
private OnLogoutListener mOnLogoutListener = new OnLogoutListener()
{

    @Override
    public void onFail(String reason)
    {
        mTextStatus.setText(reason);
        Log.w(TAG, "Failed to login");
    }

    @Override
    public void onException(Throwable throwable)
    {
        mTextStatus.setText("Exception: " + throwable.getMessage());
        Log.e(TAG, "Bad thing happened", throwable);
    }

    @Override
    public void onThinking()
    {
        // show progress bar or something to the user while login is happening
        mTextStatus.setText("Thinking...");
    }

    @Override
    public void onLogout()
    {
        // change the state of the button or do whatever you want
        mTextStatus.setText("Logged out");
        loggedOutUIState();
        toast("You are logged out");
    }

};





@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

     View rootView = inflater.inflate(R.layout.homend_home_fragment, container, false);

    // test local language
        Utils.updateLanguage(getActivity(), "en");
        Utils.printHashKey(getActivity());
        mButtonLogin = (Button)rootView.findViewById(R.id.button_login);
        mButtonLogout = (Button)rootView.findViewById(R.id.button_logout);
        mTextStatus = (TextView)rootView.findViewById(R.id.text_status);



        mButtonLogin.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View arg0)
            {
                mSimpleFacebook.login(mOnLoginListener);
            }
        });

        // 2. Logout example
        mButtonLogout.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View arg0)
            {
                mSimpleFacebook.logout(mOnLogoutListener);
            }
        });





     return rootView;
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
    mSimpleFacebook.onActivityResult(getActivity(), requestCode, resultCode, data);
    super.onActivityResult(requestCode, resultCode, data);
}





private void setUIState()
{
    if (mSimpleFacebook.isLogin())
    {
        loggedInUIState();
    }
    else
    {
        loggedOutUIState();
    }
}

/**
 * Show toast
 * 
 * @param message
 */
private void toast(String message)
{
    Toast.makeText(getActivity(), message, Toast.LENGTH_SHORT).show();
}

private void loggedInUIState()
{
    mButtonLogin.setEnabled(false);
    mButtonLogout.setEnabled(true);



    mTextStatus.setText("Logged in");
}

private void loggedOutUIState()
{
    mButtonLogin.setEnabled(true);
    mButtonLogout.setEnabled(false);


    mTextStatus.setText("Logged out");
}

private void showDialog()
{
    mProgress = ProgressDialog.show(getActivity(), "Thinking",
        "Waiting for Facebook", true);
}

private void hideDialog()
{
    mProgress.hide();
}

public class OnProfileRequestAdapter implements OnProfileRequestListener
{

    @Override
    public void onThinking()
    {
    }

    @Override
    public void onException(Throwable throwable)
    {
    }

    @Override
    public void onFail(String reason)
    {
    }

    @Override
    public void onComplete(Profile profile)
    {
    }

}

}

推荐答案

我想问题可能是在这里。你刚才宣布的变量

I think problem might be here. You have just declared your variable

private SimpleFacebook mSimpleFacebook;

您还没有初始化的变量,因此你有NPE

you haven't initialized that variable so you got NPE

所以初始化它onCreateView()方法。

So initialized it on onCreateView() method.

mSimpleFacebook = SimpleFacebook.getInstance(getActivity());

但你得到错误,那么你需要改变最终

And yet you get error then you need to finally change

mSimpleFacebook = SimpleFacebook.getInstance();

添加此行到清单文件。

<activity android:name="com.facebook.LoginActivity" android:screenOrientation="portrait" android:configChanges="keyboardHidden|orientation">
</activity>

这将最终为你工作。!!

which would be finally works for you.!!

这篇关于Facebook登录的Andr​​oid应用程序崩溃的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆