package com.devsmart.android.activity;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentTransaction;
import android.util.Log;
import android.view.Window;
public class FragmentShellActivity extends FragmentActivity implements NavigationDelegate {
public static final String EXTRA_FRAGMENTNAME = "fragname";
public static final String EXTRA_FRAGMENTARGS = "fragargs";
public static final String EXTRA_ORIENTATION = "orient";
private Fragment mBaseFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
Intent launchIntent = getIntent();
final String fragclassname = launchIntent.getStringExtra(EXTRA_FRAGMENTNAME);
final Bundle fragargs = launchIntent.getBundleExtra(EXTRA_FRAGMENTARGS);
final int orient = launchIntent.getIntExtra(EXTRA_ORIENTATION, ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
setRequestedOrientation(orient);
try {
Class<?> fragmentClass = getClassLoader().loadClass(fragclassname);
mBaseFragment = (Fragment) fragmentClass.newInstance();
mBaseFragment.setArguments(fragargs);
FragmentTransaction tr = getSupportFragmentManager().beginTransaction();
tr.add(android.R.id.content, mBaseFragment);
tr.commit();
} catch(Exception e) {
Log.e(FragmentShellActivity.class.getName(), "", e);
finish();
}
}
public static Intent createIntent(Context context, Class<?> fragmentClass, Bundle fragmentArgs){
return createIntent(context, fragmentClass, fragmentArgs, ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
}
public static Intent createIntent(Context context, Class<?> fragmentClass, Bundle fragmentArgs, int screenOrientationPortrait) {
Intent retval = new Intent(context, FragmentShellActivity.class);
retval.putExtra(EXTRA_FRAGMENTNAME, fragmentClass.getName());
retval.putExtra(EXTRA_FRAGMENTARGS, fragmentArgs);
retval.putExtra(EXTRA_ORIENTATION, screenOrientationPortrait);
return retval;
}
@Override
public void onNavigateBack() {
finish();
}
}