Stbdroid之Fragment

来源:互联网 发布:popo mac版 编辑:程序博客网 时间:2024/06/05 18:45

最近在学习Fragment,有必要记录下来,以免“过目就忘”。

Fragment在大屏幕的设备中应用相对广泛些,因为它的出现就是为了适应平板电脑。

Fragment一般都要跟Activity一起使用。下面主要是用到ListFragment,Fragment。

MainActivity.java

public class MainActivity extends Activity implements ClickCallback{@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);display(R.drawable.ic_launcher);}@Overridepublic void onItemSelected(int id){int imageId = 0;switch(id){case 0:imageId = R.drawable.ic_launcher;break;case 1:imageId = R.drawable.ic_header;break;case 2:imageId = R.drawable.flower;break;}display(imageId);}private void display(int id){RightFragment rightFragment = new RightFragment();Bundle b = new Bundle();b.putInt(RightFragment.FRAG_ID, id);rightFragment.setArguments(b);FragmentTransaction ft = getFragmentManager().beginTransaction();ft.replace(R.id.right_container, rightFragment);ft.commit();}



MyFragment继承ListFragment,显示列表内容

public class MyFragment extends ListFragment{private ClickCallback mCallback;public interface ClickCallback{public void onItemSelected(int id);}@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);String[] list = getResources().getStringArray(R.array.string_list);ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_expandable_list_item_1, android.R.id.text1, list);setListAdapter(adapter);}@Overridepublic void onAttach(Activity activity){super.onAttach(activity);///检测使用Fragment的activity是否实现了接口if (!(activity instanceof ClickCallback)){throw new IllegalStateException("You should implement ClickCallback interface where activity contain the MyFragment!");}mCallback = (ClickCallback)activity;}@Overridepublic void onListItemClick(ListView l, View v, int position, long id) {super.onListItemClick(l, v, position, id);mCallback.onItemSelected(position);}}



RightFragment继承Fragment实现右边图片的切换显示

public class RightFragment extends Fragment{public static final String FRAG_ID = "my_fragment";private int mImageId = R.drawable.ic_launcher;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);if (getArguments().containsKey(FRAG_ID)){mImageId = getArguments().getInt(FRAG_ID);System.out.println("mImageId "+ mImageId);}}@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {View rootView = inflater.inflate(R.layout.right_contain, container, false);((ImageView) rootView.findViewById(R.id.image_id)).setImageDrawable(getResources().getDrawable(mImageId));return rootView;}}


下载

原创粉丝点击