Android - handle navigation to multi activities from list view
What do you see as the advantage of your approach? Why not just:

servicesButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
             showActivity(ServicesActivity.class);
        }
    });


without the constants and the switch converting them to their respective classes? What value do you feel this additional abstraction layer adds to the code?

(If you got rid of it, you'd only need showActivity implemented as follows:

private void showActivity(Class mActivity) {
    Intent intent = new Intent(MainActivity.this, mActivity);
    startActivity(intent);
}


)


A few other remarks:


By convention, names of methods in Java should start with lower-case (so, showActivity and navigateTo - just like startActivity and setOnClickListener).
Parameter names shouldn't start with "m". There is a - controversial - naming convention that prefixes class members (or fields) with "m". I personally think it's iffy, but some people do that. This convention at least has some logic behind it though, whereas prefixing a parameter with "m" makes no sense.
As of now you can pass any class to this method, which isn't as type safe as it could be. If you made it generic, you could narrow it down to Activity subclasses, making it more typesafe:

private &lt;T extends Activity&gt; void showActivity(Class&lt;T&gt; activity) {
    Intent intent = new Intent(MainActivity.this, activity);
    startActivity(intent);
}


Now you can't call eg. showActivity(Integer.class).
Other than removing the "m" prefix from the parameter name, I wouldn't also keep it named "activity". It's an Activity class, not an Activity (instance object) itself. I'd rename it to activityClass.