- 인터페이스를 이용해서 프래그먼트에서 액티비티로 이벤트를 전달 하는 방법-
[MainActivity]
public class MainActivity extends AppCompatActivity implements OnListItemSelectedListener{
private static String[] NUMBERS = new String[] { "1", "2", "3", "4", "5" };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 프래그먼트 생성ArrayListFragment list = new ArrayListFragment();
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.add(android.R.id.content, list).commit();
}
public void onListItemSelected(String itemName) {
setTitle(getTitle() + " " + itemName);
}
public static class ArrayListFragment extends ListFragment {
OnListItemSelectedListener myListener;
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
try {
// activity 에 OnListItemSelectedListener 인터페이스가 구현되어 있어야 캐스팅 가능함.
myListener = (OnListItemSelectedListener) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString()
+ " must implement OnListItemSelectedListener interface");
}
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
setListAdapter(new ArrayAdapter<String>(getActivity(),
android.R.layout.simple_list_item_activated_1, NUMBERS));
getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
}
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
getListView().setItemChecked(position, true);// 프래그먼트 아이템 클릭시 인터페이스 함수 호출하여 전달
myListener.onListItemSelected(NUMBERS[position]);
}
}
}
[OnListItemSelectedListener.java] // 인터페이스
public interface OnListItemSelectedListener {
public void onListItemSelected(String itemName);
}
'android' 카테고리의 다른 글
AppCompatActivity 에서 Menu resource에 showAsAction 쓰고자 하는 경우 (1) | 2015.11.23 |
---|---|
Android Toolbar 적용하기(deprecated된 ActionBar 대신 적용하기) (0) | 2015.11.23 |
AppCompatAcrtivity 에서 Fragment back stack 이 동작하지 않을때 처리 (0) | 2015.11.23 |
managedQuery() deprecated => getContentResolver.query() 로 대체 (0) | 2015.11.23 |
LoaderManager simple example - CursorLoader 의 사용 (1) | 2015.11.23 |