Subactivity onClick Увольнение в родительском классе
У меня возникли проблемы с обработчиком onClick в подгруппе ActivityGroup.
Я запускаю StoreActivity, используя:
Intent storeIntent = new Intent(this, StoreActivity.class);
storeIntent.putExtra(StoreActivity.INTENT_STORE_ID, storeId);
View newVeiw = getLocalActivityManager().startActivity("StoreActivity", storeIntent).getDecorView();
setContentView(newVeiw);
Log.e("DEBUG", "current activity: " + getLocalActivityManager().getCurrentActivity().toString());
В макете StoreActivity у меня есть кнопка, которая определяет метод onClick. Однако по какой-то причине он пытается вызвать это в родительском классе, который запустил StoreActivity. Я что-то не так делаю при запуске активности? Вывод Log.e выше говорит о том, что StoreActivity является текущей активностью, поэтому я немного растерялся относительно того, почему это происходит. Я могу обойти это, определив onClickListener для кнопки в коде в StoreActvity, но я хотел бы избежать этого, если это возможно.
2 ответа
Я думаю, что это потому, что вы вызываете setContentView из родительской активности вместо субактивности. Почему бы вам просто не начать действие в намерении и установить представление содержимого в новом действии? Было бы намного проще.
Попробуй это:
Intent storeIntent = new Intent(this, StoreActivity.class);
storeIntent.putExtra(StoreActivity.INTENT_STORE_ID, storeId);
startActivity(storeIntent);
а затем в StoreActivity.java сделать:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
View newVeiw = getLocalActivityManager().startActivity("StoreActivity", storeIntent).getDecorView();
setContentView(newView); //not sure if this would work, would probably be easier to put your xml layout file in here.
}
Хорошо, я решил это. Проблема не была связана ни с одним из этого кода. У меня был общий базовый класс для моей деятельности, и я случайно сделал инфлятор одноразовым. Это означало, что все раздутые макеты принадлежали первому классу, который создал тот единственный экземпляр, который оказался классом, который неправильно получал событие onClick. Удаление этого синглтона решило это.