У меня есть хватка, у которой есть заголовок с двумя кнопками и список на нем. Я хочу получать события по этим предметам. Фрагмент динамически добавляется в пользовательский интерфейс, а мое приложение - для android 16 и выше, поэтому мне не нужно использовать поддержку lib. Я решил реализовать прослушиватели кликов как с кнопками, так и с списком в MainActivity, так как они отключили поиск баз данных, и я хотел бы сохранить свои поисковые запросы в одном месте. так, я сделал основной вид деятельности, который реализует как: OnClickListener и OnItemClickListener и добавлены следующие методы:Android Fragment onClickListener не называется
public void onClick(View v) {
Toast.makeText(getApplicationContext(), "List Click", Toast.LENGTH_SHORT).show();
}
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
Toast.makeText(getApplicationContext(), "List Click"+arg2, Toast.LENGTH_SHORT).show();
}
Для вызова фрагмента я делаю:
//get a list of the data
Fragment sideFormations=sideFragment.newInstance(list);
sideFormations.setClickListeners(this,this); //<--important bit
Toast.makeText(getApplicationContext(), "listeners set", Toast.LENGTH_SHORT).show();
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.side_frame,sideFormations);
ft.commit();
В методе setClickListener в фраги, я установить сохранить значения, передаваемые в качестве нажмите listeners.and соответствующие разделы фраг являются:
onCreateView: //nflate the views, setAdapter for the list, ensure clickability of the views
onStart: //assign click listeners which were passed in to the list, and to the header.
Я до сих пор не могут поймать кликов в основной деятельности, т.е.. но без ошибок. Любые идеи будут очень приветствуемы и оценены. Спасибо.
EDIT: Добавление кода, где я определяю слушателей для представлений.
//This is the latest iteration. As I mentioned, I have tried to set these at different places in the frag's lifecycle without much success:
public void onStart() {
super.onStart();
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {
System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!");
Log.d("CLICK-VIEW","List Clicked");
main.onItemClick(arg0,arg1,arg2,arg3);
}
});
mHeaderView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!");
Log.d("CLICK-VIEW","Header Clicked");
//main.onClick(v);
}
});
}
могли бы вы добавить свой код, в котором вы определяете слушатель взглядов? – owe
@owe Привет. Благодарю. Я добавлю его сейчас. –
Thats странно ... но: вы говорите, что ваш headerView состоит из двух кнопок. Вы должны добавить ClickListener для каждой кнопки, теперь кажется, что вы добавляете слушателя к макету, где находятся кнопки внутри. Plz публикует всю вашу активность и файлы xml. На самом деле не очень сложно установить слушателей на просмотр (см. Ответ Бираджа Залавадии), поэтому я думаю, что в вашем коде есть еще одна проблема. – owe