I follow the tutorial I found on this site http://www.helloandroid.com/tutorials/using-facebook-sdk-android-development-part-2 , and when I inserted 2 sets of code segments into classes, the tutorial indicates that i get 4 facebook sdk related errors. I inserted into the code segments below with bold / starred errors.
Does anyone know how I can fix these errors?
Here are the error messages I get when I hover over errors to:
1.onCreate (Bundle savedInstanceState): the onCreate (Bundle) method of type main should override or implement the supertype method
btnLogin.setOnClickListener (new OnClickListener (): OnClickListener cannot be enabled for type
LoginDialogListener: type FBConnectionActivity.LoginDialogListener should implement the inherited abstract method Facebook.DialogListener.onComplete (Bundle)
onComplete (Bundle values): the onComplete (Bundle) method of type FBConnectionActivity.LoginDialogListener must override or implement the supertype method
Segment 1 (2 errors): In this part, errors are in oncreate and onclicklistener
package com.outfit.first; import android.widget.Button; import android.widget.ProgressBar; import android.widget.TextView; public class main extends FBConnectionActivity { private TextView txtUserName; private ProgressBar pbLogin; private Button btnLogin; @Override public void **onCreate(Bundle savedInstanceState)** { super.onCreate(savedInstanceState); setContentView(R.layout.main); txtUserName = (TextView) findViewById(R.id.textFacebook); pbLogin = (ProgressBar) findViewById(R.id.progressLogin); btnLogin = (Button) findViewById(R.id.buttonLogin); btnLogin.setOnClickListener(new **OnClickListener**() { @Override public void onClick(View arg0) { pbLogin.setVisibility(ProgressBar.VISIBLE); setConnection(); getID(txtUserName, pbLogin); } }); } }
Segment 2 (2 errors): In this part, errors are in the LoginDialogListener class and onComplete (Bundle values) inside this class.
package com.outfit.first; import com.facebook.android.AsyncFacebookRunner; import com.facebook.android.Facebook; import android.app.Activity; import android.content.Context; import android.content.SharedPreferences; import android.preference.PreferenceManager; import android.util.Log; import android.widget.ProgressBar; import android.widget.TextView; public abstract class FBConnectionActivity extends Activity { public static final String TAG = "FACEBOOK"; private Facebook mFacebook; public static final String APP_ID = "136907069717004"; private AsyncFacebookRunner mAsyncRunner; private static final String[] PERMS = new String[] { "read_stream" }; private SharedPreferences sharedPrefs; private Context mContext; private TextView username; private ProgressBar pb; public void setConnection() { mContext = this; mFacebook = new Facebook(APP_ID); mAsyncRunner = new AsyncFacebookRunner(mFacebook); } public void getID(TextView txtUserName, ProgressBar progbar) { username = txtUserName; pb = progbar; if (isSession()) { Log.d(TAG, "sessionValid"); mAsyncRunner.**request**("me", new IDRequestListener()); } else { // no logged in, so relogin Log.d(TAG, "sessionNOTValid, relogin"); mFacebook.**authorize**(this, PERMS, new LoginDialogListener()); } } public boolean isSession() { sharedPrefs = PreferenceManager.getDefaultSharedPreferences(mContext); String access_token = sharedPrefs.getString("access_token", "x"); Long expires = sharedPrefs.getLong("access_expires", -1); Log.d(TAG, access_token); if (access_token != null && expires != -1) { mFacebook.setAccessToken(access_token); mFacebook.setAccessExpires(expires); } return mFacebook.isSessionValid(); } private class **LoginDialogListener** implements DialogListener { @Override public void **onComplete(Bundle values)** { Log.d(TAG, "LoginONComplete"); String token = mFacebook.getAccessToken(); long token_expires = mFacebook.getAccessExpires(); Log.d(TAG, "AccessToken: " + token); Log.d(TAG, "AccessExpires: " + token_expires); sharedPrefs = PreferenceManager .getDefaultSharedPreferences(mContext); sharedPrefs.edit().putLong("access_expires", token_expires) .commit(); sharedPrefs.edit().putString("access_token", token).commit(); mAsyncRunner.request("me", new IDRequestListener()); } @Override public void onFacebookError(FacebookError e) { Log.d(TAG, "FacebookError: " + e.getMessage()); } @Override public void onError(DialogError e) { Log.d(TAG, "Error: " + e.getMessage()); } @Override public void onCancel() { Log.d(TAG, "OnCancel"); } } private class IDRequestListener implements RequestListener { @Override public void onComplete(String response, Object state) { try { Log.d(TAG, "IDRequestONComplete";); Log.d(TAG, "Response: " + response.toString()); JSONObject json = Util.parseJson(response); final String id = json.getString("id"); final String name = json.getString("name"); FBConnectionActivity.this.runOnUiThread(new Runnable() { public void run() { username.setText("Welcome: " + name+"\n ID: "+id); pb.setVisibility(ProgressBar.GONE); } }); } catch (JSONException e) { Log.d(TAG, "JSONException: " + e.getMessage()); } catch (FacebookError e) { Log.d(TAG, "FacebookError: " + e.getMessage()); } } @Override public void onIOException(IOException e, Object state) { Log.d(TAG, "IOException: " + e.getMessage()); } @Override public void onFileNotFoundException(FileNotFoundException e, Object state) { Log.d(TAG, "FileNotFoundException: " + e.getMessage()); } @Override public void onMalformedURLException(MalformedURLException e, Object state) { Log.d(TAG, "MalformedURLException: " + e.getMessage()); } @Override public void onFacebookError(FacebookError e, Object state) { Log.d(TAG, "FacebookError: " + e.getMessage()); } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { mFacebook.authorizeCallback(requestCode, resultCode, data); } }