Я думаю, что поскольку вы создаете локальную переменную gen, она теряет свое значение после того, как вы выбираете здесь пол,
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
String gen = adapterView.getItemAtPosition(i).toString();
}
Я предполагаю, что вы делаете это внутри действия, поэтому создайте переменную вуровень активности, например,
public class MainActivity extends AppCompatActivity {
private String gen;
}
Затем внутри onItemSelected сделайте, как показано ниже
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
gen = adapterView.getItemAtPosition(i).toString();
}
Но вам нужно убедиться, что спиннер имеет значение по умолчанию, без того, чтобы строка gen выдавала исключение.