Finally, I managed to solve my problem. Before I was trying to do stuffs inside spinner.setOnItemSelectedListener() method, which was really wrong. In my BaseActivity;
Configuration conf = getResources().getConfiguration();
//creating the position of the language in spinner from arraylist
int currentLanguage = Arrays.asList(language_codes).indexOf(
conf.locale.getLanguage());
spinner.setSelection(currentLanguage);
This allows me the selected item of spinner remain on the top always when I even change the activities. Hope this might help others. :)