기본 콘텐츠로 건너뛰기

라벨이 fragment인 게시물 표시

[Android] Fragment를 XML 코드로 생성하기

Android에서 Fragment는 무조건 Java Code로 FragmentTransaction을 통해 띄우는 건 줄 알았는데, 간단히 XML만으로도 띄울 수 있는 방법을 알게 되어 간단히 적어 본다. 1. Fragment를 상속받는 Class를 정의한다. public class DetailsFragment extends Fragment {     @BindView(R.id.tv_title) TextView mTvTitle;     public DetailsFragment() {     }     @Override     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {         View root = inflater.inflate(R.layout.fragment_details, container, false);         ButterKnife.bind(this, root);         return root;     } } fragment_details.xml 은 생략한다. 2. 위에서 정의한 DetailsFragment를 적재할 MainActivity의 layout xml 코드를 아래와 같이 작성한다. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"         xmlns:tools="http://schemas.android.com/tools"         android:layout_width="mat...

[Android] Fragment 안에 ActionBar Item 추가

ActionBar Item을 추가하는 것은 Activity나 Fragment나 크게 다르지 않다. 언뜻보고 Fragment에서도 Activity에서 하던 것과 동일하게 시도해보았다. 사전에 Menu Resource를 정의해놓고 아래와 같이 onCreateOptionsMenu() 메서드를 Override @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {    inflater.inflate(R.menu.menu, menu); } 그리고 실행시켜보니,  결과는...  ActionBar에 Item이 보이지 않는다! 분명 Menu 아이템들도 Inflate 해주었고, Resource도 정확히 세팅했는데... 관련하여 구글링한 결과 Activity와 Fragment에서 ActionBar Item을 추가하는 것은 전반적으로 동일하나 작은 차이가 존재한다. Fragment에서는 아래와 같이 onCreate() 메서드에서 setHasOptionsMenu(true) 를 꼭 호출해주자. 그래야만 위에서 inflate한 메뉴들이 보인다. @Override public void onCreate() {     ...     setHasOptionsMenu(true);     ... } 그 뒤 메뉴들에 event 추가하는 것은 Activity에서와 동일하게  onOptionsItemSelected() 메서드를 override하여 구현하면 된다. @Override public boolean onOptionsItemSelected(MenuItem item) {    // handle item selection    switch (item.getItemId()) {       case R....

[Android] Fragment에 RecyclerView 추가하기

배경:  - List View를 보여주는 Fragment로 전환 RecyclerView  위젯은  ListView 의 업그레이드 버전으로 데이터 양이 많은 경우 스크롤을 효율적으로 수행할 수 있는 위젯이다. refer: http://developer.android.com/intl/ko/training/material/lists-cards.html 위 그림과 같이 Adapter를 통해 데이터에 접근하며,  LayoutManager를 통해 위젯 내부 항목들을 배치한다. 따라서 RecyclerView를 적용하기 위해서는     - LayoutManager     - Adaper 를 지정해주어야 한다. 1. 리스트에 보여질 각 항목 item layout 생성 다음과 같이 "id contents" 로 구성하였다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 < ?xml version = "1.0"  encoding = "utf-8" ? > < LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android"     android:layout_width = "wrap_content"     android:layout_height = "wrap_content"     android:orientation = "horizontal" >      < TextView     ...

[Android] Fragment 위에 Dialog 띄우기

배경:  - Fragment에 Google Maps를 올려 사용자에게 보여주고 있다.  - 사용자가 Dialog 창을 열어 검색을 할 수 있게 하고 싶다. 1. Dialog layout xml 생성 Dialog 창에는 하나의 EditText를 추가하여 사용자로 하여금 String을 입력받게 한다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 < LinearLayout   xmlns:android = "http://schemas.android.com/apk/res/android"         android:orientation = "vertical"         android:layout_width = "wrap_content"         android:layout_height = "wrap_content" >     < LinearLayout                 android:orientation = "horizontal"                 android:layout_width = "match_parent"                 android:layout_height = "wrap_content" >     ...

[Android] Fragment에 Google Maps 추가하기

먼저 포스팅에서 Android Studio에서 제공하는 기본적인 Google Maps를 실행해보았다. [Android] Simple Google Maps 추가하기 (Android API v2) 개발자는 해야할 것은 Google Maps Server 접근할 수 있는 API Key를 얻는 것 뿐이었다. 그리고 Android Studio에서 마우스 몇번이면 Google Maps가 나의 App에서 실행되는 것을 볼 수 있었다. 이번에는 Android Studio에서 자동으로 만들어 주는 Activity가 아닌 Fragment에 Google Maps를 올려보려고 한다. 배경:  - 기본적으로 MainActivity가 있으며, Fragment들을 만들어 이를 바꿔주면서 구동되는 앱이다.  - Fragment 중 하나는 Google Maps를 담고 있어야 한다. 이전에 작업했던 것과 크게 다르지 않다. Android Studio에서 자동으로 생성된 FragmentActivity 코드를 Fragment로 그대로 Copy & Paste 해주기만 해도 제대로 동작한다. Fragment의 onCreateView와 onMapReady가 핵심 부분으로, 다음과 같다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24     @Override      public  View onCreateView(LayoutInflater inflater, ViewGroup container,                ...