Created
July 26, 2013 19:27
-
-
Save MatthewJamesBoyle/6091580 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.example.social; | |
import android.content.Intent; | |
import android.os.Bundle; | |
import android.support.v4.app.Fragment; | |
import android.support.v4.app.FragmentActivity; | |
import android.support.v4.app.FragmentManager; | |
import android.support.v4.app.FragmentTransaction; | |
import android.view.Menu; | |
import android.view.MenuItem; | |
import com.facebook.Session; | |
import com.facebook.SessionState; | |
import com.facebook.UiLifecycleHelper; | |
public class DashBoard extends FragmentActivity { | |
private static final int SPLASH = 0; | |
private static final int SELECTION = 1; | |
private static final int FRAGMENT_COUNT = SELECTION + 1; | |
private boolean isResumed = false; | |
private Fragment[] fragments = new Fragment[FRAGMENT_COUNT]; | |
public void onCreate(Bundle savedInstanceState) { | |
super.onCreate(savedInstanceState); | |
uiHelper = new UiLifecycleHelper(this, callback); | |
uiHelper.onCreate(savedInstanceState); | |
setContentView(R.layout.activity_dash_board); | |
FragmentManager fm = getSupportFragmentManager(); | |
fragments[SPLASH] = fm.findFragmentById(R.id.splashFragment); | |
fragments[SELECTION] = fm.findFragmentById(R.id.selectionFragment); | |
FragmentTransaction transaction = fm.beginTransaction(); | |
for (int i = 0; i < fragments.length; i++) { | |
transaction.hide(fragments[i]); | |
} | |
transaction.commit(); | |
} | |
private void showFragment(int fragmentIndex, boolean addToBackStack) { | |
FragmentManager fm = getSupportFragmentManager(); | |
FragmentTransaction transaction = fm.beginTransaction(); | |
for (int i = 0; i < fragments.length; i++) { | |
if (i == fragmentIndex) { | |
transaction.show(fragments[i]); | |
} else { | |
transaction.hide(fragments[i]); | |
} | |
} | |
if (addToBackStack) { | |
transaction.addToBackStack(null); | |
} | |
transaction.commit(); | |
} | |
public boolean onCreateOptionsMenu(Menu menu) { | |
// Inflate the menu; this adds items to the action bar if it is present. | |
getMenuInflater().inflate(R.menu.main, menu); | |
return true; | |
} | |
public void facebookIntent(MenuItem item) { | |
startActivity(new Intent(this, Facebook.class)); | |
} | |
public void twitterIntent(MenuItem item) { | |
startActivity(new Intent(this, Twitter.class)); | |
} | |
public void dashboardIntent(MenuItem item) { | |
startActivity(new Intent(this, DashBoard.class)); | |
} | |
public void redditIntent(MenuItem item) { | |
startActivity(new Intent(this, Reddit.class)); | |
} | |
@Override | |
public void onResume() { | |
super.onResume(); | |
isResumed = true; | |
uiHelper.onResume(); | |
} | |
@Override | |
public void onPause() { | |
super.onPause(); | |
uiHelper.onPause(); | |
isResumed = false; | |
} | |
private void onSessionStateChange(Session session, SessionState state, | |
Exception exception) { | |
// Only make changes if the activity is visible | |
if (isResumed) { | |
FragmentManager manager = getSupportFragmentManager(); | |
// Get the number of entries in the back stack | |
int backStackSize = manager.getBackStackEntryCount(); | |
// Clear the back stack | |
for (int i = 0; i < backStackSize; i++) { | |
manager.popBackStack(); | |
} | |
if (state.isOpened()) { | |
// If the session state is open: | |
// Show the authenticated fragment | |
showFragment(SELECTION, false); | |
} else if (state.isClosed()) { | |
// If the session state is closed: | |
// Show the login fragment | |
showFragment(SPLASH, false); | |
} | |
} | |
} | |
@Override | |
protected void onResumeFragments() { | |
super.onResumeFragments(); | |
Session session = Session.getActiveSession(); | |
if (session != null && session.isOpened()) { | |
// if the session is already open, | |
// try to show the selection fragment | |
showFragment(SELECTION, false); | |
} else { | |
// otherwise present the splash screen | |
// and ask the person to login. | |
showFragment(SPLASH, false); | |
} | |
} | |
private UiLifecycleHelper uiHelper; | |
private Session.StatusCallback callback = new Session.StatusCallback() { | |
@Override | |
public void call(Session session, SessionState state, | |
Exception exception) { | |
onSessionStateChange(session, state, exception); | |
} | |
}; | |
@Override | |
public void onActivityResult(int requestCode, int resultCode, Intent data) { | |
super.onActivityResult(requestCode, resultCode, data); | |
uiHelper.onActivityResult(requestCode, resultCode, data); | |
} | |
@Override | |
public void onDestroy() { | |
super.onDestroy(); | |
uiHelper.onDestroy(); | |
} | |
@Override | |
protected void onSaveInstanceState(Bundle outState) { | |
super.onSaveInstanceState(outState); | |
uiHelper.onSaveInstanceState(outState); | |
} | |
} | |
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" | |
xmlns:tools="http://schemas.android.com/tools" | |
android:layout_width="fill_parent" | |
android:layout_height="fill_parent" | |
android:orientation="vertical" | |
tools:context=".DashBoard" > | |
<fragment | |
android:id="@+id/selectionFragment" | |
android:name="com.example.social.SelectionFragment" | |
android:layout_width="match_parent" | |
android:layout_height="match_parent" /> | |
<fragment | |
android:id="@+id/splashFragment" | |
android:name="com.example.social.SplashFragment" | |
android:layout_width="match_parent" | |
android:layout_height="match_parent" /> | |
</LinearLayout> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment