Sunday, September 9, 2012

Android Activity Navigate Helper

This Navigator class helps to easily navigate from one activity to another including passing parameters. It also  dose the navigate back to a previous activity as well. With the use of the HashMap object you can pass  serializable objects to other activities.

public class Navigator {

 //navigate form one activity to another with passing parameters
public static void Navigate(Activity activityFrom, Class classTo,
HashMap<String, Serializable> params) {

Controller.instance().PrevActStack().push(
activityFrom.getClass().getName());

Intent intentNavigateTo = new Intent(activityFrom, classTo);
intentNavigateTo.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

Set set = params.entrySet();
Iterator iterator = set.iterator();

while (iterator.hasNext()) {

Map.Entry me = (Map.Entry) iterator.next();
intentNavigateTo.putExtra((String) me.getKey(), (Serializable) me
.getValue());
}

activityFrom.startActivityForResult(intentNavigateTo, 0);
activityFrom.finish();
params.clear();

}

//navigate form one activity to another without passing parameters
public static void Navigate(Activity activityFrom, Class classTo) {

Controller.instance().PrevActStack().push(
activityFrom.getClass().getName());
Intent intentNavigateTo = new Intent(activityFrom, classTo);
intentNavigateTo.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
activityFrom.startActivity(intentNavigateTo);
activityFrom.finish();
}

 //navigate back to previous activity with passing parameters
public static void NavigateBack(Activity activityFrom,
HashMap<String, Serializable> params) throws Exception {

if (Controller.instance().PrevActStack().size() == 0) {
throw new Exception("No previous activity found !!");
}

Intent intentNavigateBackTo = new Intent(activityFrom, Class
.forName(Controller.instance().PrevActStack().pop()));

intentNavigateBackTo.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Set set = params.entrySet();
Iterator iterator = set.iterator();

while (iterator.hasNext()) {

Map.Entry me = (Map.Entry) iterator.next();
intentNavigateBackTo.putExtra((String) me.getKey(),
(Serializable) me.getValue());
}

activityFrom.startActivity(intentNavigateBackTo);
activityFrom.finish();
params.clear();

}

 //navigate back to previous activity without passing parameters
public static void NavigateBack(Activity activityFrom) throws Exception {

if (Controller.instance().PrevActStack().size() == 0) {
throw new Exception("No previous activity found !!");
}

Intent intentNavigateBackTo = new Intent(activityFrom, Class
.forName(Controller.instance().PrevActStack().pop()));
intentNavigateBackTo.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
activityFrom.startActivity(intentNavigateBackTo);
activityFrom.finish();
}

}

No comments:

Post a Comment