может быть слишком простым, но я не могу найти правильный путь.
В C ++ я могу написать initWithParameter: xxx
для создания экземпляра класса, а затем в инициализации установить некоторые переменные экземпляра, заданные значением во время инициализации.
В Java я не знаю, как это сделать.В настоящее время я делаю следующее:
public class SpecialScreen extends BASEScreen{
private static final int ACTIVITY_1 = 1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); //create the instance
defineScreenType (ACTIVITY_1); //second call to set the instance variable
presentOnScreen();
}
На BASEScreen:
public class BASEScreen extends Activity {
private Integer activityCode; // which activity should I do?
@Override
public void onCreate(Bundle savedInstanceState) { // the creation
super.onCreate(savedInstanceState);
}
// the setting of the instance variable
public void defineScreenType(int screenID) {
activityCode = screenID;
}
Это не может быть лучшим способом сделать это.Как сделать это лучше?
Спасибо
ДОБАВЛЕНО, чтобы показать вызов SpecialScreen в BASEScreen:
@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {
Intent i;
switch (item.getItemId()) {
case OTHER_PAGE_ID:
//
if (activityCode == ACTIVITY_1) {
i = new Intent(this, SpecialScreen2.class);
i.putExtra("Task", ACTIVITY_2);
startActivityForResult(i, ACTIVITY_2);
finish();
} else {
i = new Intent(this, SpecialScreen1.class);
i.putExtra("Task", ACTIVITY_1);
startActivityForResult(i, ACTIVITY_1);
finish();
}
return true;
ps Я знаю, что установка Extra больше не требуется,Так я делал до того, как получил два подкласса SpecialScreen и всегда вызывал BASEScreen с этим параметром.