2014-03-01 203 views
0

的代碼貼在這裏和應用程序崩潰的登錄按鈕被點擊與空指針異常在homefragment當click.im一個beginer.please help.logcat http://postimg.org/image/6d1qyszkd/Facebook登錄Android應用程序崩潰

簡單的Facebook類基本上是:

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; 
} 

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) 
    { 
    } 

} 

}

+0

發佈您的logcat。 – Piyush

+0

我已添加http://postimg.org/image/6d1qyszkd/ –

+0

檢查我的答案.. – Piyush

回答

1

我想問題可能是在這裏。你剛纔宣佈的變量

private SimpleFacebook mSimpleFacebook; 

你沒有初始化的變量,因此你有NPE

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

mSimpleFacebook = SimpleFacebook.getInstance(getActivity()); 

可是你得到錯誤,那麼你需要改變最終

mSimpleFacebook = SimpleFacebook.getInstance(); 

加入這一行清單文件..

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

這將最終爲你工作。!

+0

沒有它仍然安寧我錯誤 –

+0

在哪條線你有錯誤。告訴我那一行。 – Piyush

+0

mSimpleFacebook.login(mOnLoginListener); –

相關問題