Android Fragment 에서 사용 하 는 인 스 턴 스 데모

5971 단어 AndroidFragment
Fragment 는 Android honey comb 3.0 에 추 가 된 개념 으로,Android Fragment 를 어떻게 사용 하 는 지 에 대해 Fragment 에 대한 상세 한 설명 을 했다.본 고 는 주로 사례 를 통 해 Fragment 의 사용 방법 을 더욱 직관 적 으로 이해 하도록 한다.
       먼저 인 스 턴 스 실행 효과 캡 처 를 붙 입 니 다.

       효과 그림 의 왼쪽 은 목록 이 고 오른쪽 은 목록 item 의 상세 한 정보 입 니 다.
       레이아웃 파일 먼저 보기(layot):
XML/HTML 코드

<?xml version=“1.0″ encoding=“utf-8″?> 
<LinearLayout xmlns:android=“http://schemas.android.com/apk/res/android”  
  android:orientation=“horizontal” android:layout_width=“match_parent”  
  android:layout_height=“match_parent”> 
  <fragment 
    class=“com.fragment.main.TitlesFragment”  
    android:id=“@+id/titles” android:layout_weight=“1″  
    android:layout_width=“0px” android:layout_height=“match_parent” /> 
  <FrameLayout android:id=“@+id/details” android:layout_weight=“1″  
    android:layout_width=“0px” android:layout_height=“match_parent”  
    android:background=“?android:attr/detailsElementBackground” /> 
</LinearLayout> 
       레이아웃 파일 에는 fragment 태그 와 FrameLayout 태그 가 사 용 됩 니 다.Android Fragment 를 어떻게 사용 하 는 지 는 Fragment 에 포 함 된 두 가지 방법 을 소개 합 니 다.이 인 스 턴 스 는 모두 사 용 됩 니 다.레이아웃 파일 에서 fragment 탭 이 있 는 것 을 보 았 습 니 다.이것 은 사용 방법 입 니 다.FrameLayout 탭 은 fragment 를 불 러 오 는 두 번 째 캐리어 view 가 될 것 입 니 다.
       프로그램 구현 보기(com.fragment.main.TitlesFragment):
자바 코드

public class TitlesFragment extends ListFragment {  
  
  int mCurCheckPosition = 0;  
  int mShownCheckPosition = -1;  
  
  @Override 
  public void onActivityCreated(Bundle savedInstanceState) {  
    super.onActivityCreated(savedInstanceState);  
                              
    setListAdapter(new ArrayAdapter<String>(getActivity(),  
        android.R.layout.simple_list_item_activated_1,  
        Shakespeare.TITLES)); //            
    if (savedInstanceState != null) {  
      mCurCheckPosition = savedInstanceState.getInt(“curChoice”, 0);  
      mShownCheckPosition = savedInstanceState.getInt(“shownChoice”, -1);  
    }  
      getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);  
      showDetails(mCurCheckPosition);  
  }  
  
  @Override 
  public void onSaveInstanceState(Bundle outState) {  
    super.onSaveInstanceState(outState);  
  
    outState.putInt(“curChoice”, mCurCheckPosition);  
    outState.putInt(“shownChoice”, mShownCheckPosition);  
  }  
  
  @Override 
  public void onListItemClick(ListView l, View v, int position, long id) {  
    showDetails(position);  
  }  
  
  /** 
   *  listview item    
   */ 
  void showDetails(int index) {  
    mCurCheckPosition = index;  
      getListView().setItemChecked(index, true);  
  
      if (mShownCheckPosition != mCurCheckPosition) {  
  
        DetailsFragment df = DetailsFragment.newInstance(index);  
         FragmentTransaction ft = getFragmentManager()  
            .beginTransaction();  
        ft.replace(R.id.details, df);  
        ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);  
        ft.commit();  
        mShownCheckPosition = index;  
      }    
  }  
  
} 
       TitlesFragment 는 Fragment 의 하위 클래스 인 ListFragment 를 계승 하여 정적 배열 로 목록 을 채 우 고 onListItemClick 방법 을 다시 썼 습 니 다.show Details 방법 은 ListView item 의 상세 한 정 보 를 보 여 줍 니 다.
자바 코드

DetailsFragment df = DetailsFragment.newInstance(index);//    Fragment     
FragmentTransaction ft = getFragmentManager().beginTransaction();//  FragmentTransaction     
ft.replace(R.id.details, df); //  DetailsFragment      
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);  
ft.commit();//   
       여기 에는 Android Fragment 사용 에 소 개 된 두 번 째 fragment 를 불 러 오 는 방법 이 사 용 됩 니 다.Details Fragment:
자바 코드

public class DetailsFragment extends Fragment {  
  
  /**   * Create a new instance of DetailsFragment, initialized to   * show the text at 'index'.   */ 
  public static DetailsFragment newInstance(int index) {  
    DetailsFragment f = new DetailsFragment();  
    // Supply index input as an argument.      
    Bundle args = new Bundle();  
    args.putInt(“index”, index);  
    f.setArguments(args);  
    return f;  
  }  
  
  @Override 
  public View onCreateView(LayoutInflater inflater, ViewGroup container,  
      Bundle savedInstanceState) {  
    if (container == null) {        
      return null;  
    }  
    ScrollView scroller = new ScrollView(getActivity());  
    TextView text = new TextView(getActivity());  
  
    int padding = (int) TypedValue.applyDimension(  
        TypedValue.COMPLEX_UNIT_DIP, 4, getActivity().getResources()  
            .getDisplayMetrics());  
    text.setPadding(padding, padding, padding, padding);  
    scroller.addView(text);  
    text.setText(Shakespeare.DIALOGUE[getArguments().getInt("index", 0)]);  
    return scroller;  
  }  
} 
       DetailsFragment 에 서 는 new Instance(int index)방법 으로 DetailsFragment 인 스 턴 스 를 만 들 고 전체 인 자 를 받 아들 여 onCreateView 방법 으로 view 를 만 들 었 습 니 다.
       이 예 는 기본적으로 완성 되 었 는데 주로 3.0 이후 의 사용 방법 을 소개 했다.사실은 Fragment 는 SDK 1.6 이후 에 사용 할 수 있 고 1.6 에서 사용 하려 면 android-support-v4.jar 패 키 지 를 빌려 야 한다.android-support-v4.jar 는 SDK 루트 디 렉 터 리\extras\android\\compatibility\\v4 에서 찾 을 수 있 습 니 다.
          이상 은 안 드 로 이 드 Fragment 에 대한 자 료 를 정리 하고 관련 자 료 를 계속 추가 하 는 것 입 니 다.본 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기