Subactivity onClick Увольнение в родительском классе - PullRequest
0 голосов
/ 13 июня 2011

У меня возникли проблемы с обработчиком 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 ]

0 голосов
/ 14 июня 2011

Хорошо, я решил это.Проблема не была связана ни с одним из этого кода.У меня был общий базовый класс для моей деятельности, и я случайно сделал инфлятор одноразовым.Это означало, что все раздутые макеты принадлежали первому классу, который создал тот единственный экземпляр, который оказался классом, который неправильно получал событие onClick.Удаление этого синглтона решило это.

0 голосов
/ 13 июня 2011

Я думаю, это потому, что вы вызываете 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.
}
...