main.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > <FrameLayout android:id="@+id/titles" android:layout_width="0px" android:layout_height="match_parent" android:layout_weight="1" > <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent" > <ListView android:id="@+id/listview" android:layout_width="match_parent" android:layout_height="match_parent" > </ListView> <ProgressBar android:id="@+id/progressBar1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:visibility="gone" /> </RelativeLayout> </FrameLayout> <FrameLayout android:id="@+id/details" android:layout_width="0px" android:layout_height="match_parent" android:layout_weight="3" android:background="?android:attr/detailsElementBackground" > </FrameLayout></LinearLayout>
title.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="match_parent" android:orientation="horizontal" > <ImageView android:id="@+id/imageview" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/ic_launcher" /> <TextView android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" /></LinearLayout>
TitlesFragment.java
package com.xuzhi.fragment;import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.app.AlertDialog;import android.app.FragmentTransaction;import android.app.ListFragment;import android.app.ProgressDialog;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.AdapterView.OnItemLongClickListener;import android.widget.ArrayAdapter;import android.widget.ListView;import android.widget.ProgressBar;public class TitlesFragment extends ListFragment{// boolean mDualPane;int mCurCheckPosition = 0;private static List<String> list = new ArrayList<String>();@Overridepublic void onCreate(Bundle savedInstanceState){// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);System.out.println("Fragment-->onCreate");}public static TitlesFragment newInstance(){TitlesFragment details = new TitlesFragment();return details;}Thread th = new Thread(){@Overridepublic void run(){try{sleep(5000);}catch (InterruptedException e){e.printStackTrace();}for (int i = 0; i < 100; i++){list.add("csh" + i);}Message msg = new Message();msg.what = 1;handler.sendMessage(msg);super.run();}};Handler handler = new Handler(){@Overridepublic void handleMessage(Message msg){mInvock1.callInvock();super.handleMessage(msg);}};@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState){System.out.println("Fragment-->onCreateView");return super.onCreateView(inflater, container, savedInstanceState);}@Overridepublic void onPause(){super.onPause();System.out.println("Fragment-->onPause");}@Overridepublic void onStop(){super.onStop();System.out.println("Fragment-->onStop");}@Overridepublic void onAttach(Activity activity){super.onAttach(activity);System.out.println("Fragment-->onAttach");}@Overridepublic void onStart(){super.onStart();System.out.println("Fragment-->onStart");}@Overridepublic void onResume(){super.onResume();System.out.println("Fragment-->onResume");th.start();}@Overridepublic void onDestroy(){super.onDestroy();System.out.println("Fragment-->onDestroy");}private ListView listviewchild;private void addData(){for (int i = 0; i < 5; i++){list.add("csh" + i);}}private adapter mAdapter;private ProgressBar mProgressBar;@Overridepublic void onActivityCreated(Bundle savedInstanceState){// TODO Auto-generated method stubsuper.onActivityCreated(savedInstanceState);System.out.println("Fragment-->onActivityCreted");addData();// 添加初始資料View listview = getActivity().findViewById(R.id.titles);mProgressBar = (ProgressBar) listview.findViewById(R.id.progressBar1);if (listview != null){listviewchild = (ListView) listview.findViewById(R.id.listview);mAdapter = new adapter(list, getActivity());listviewchild.setAdapter(mAdapter);listviewchild.setOnItemClickListener(new OnItemClickListener(){@Overridepublic void onItemClick(AdapterView<?> arg0, View arg1,int position, long arg3){showDetails(position);}});listviewchild.setOnItemLongClickListener(new OnItemLongClickListener(){@Overridepublic boolean onItemLongClick(AdapterView<?> arg0,View arg1, int postion, long arg3){MyDialogFragment dialog =MyDialogFragment.newInstance("確認刪除" + list.get(postion) + "資料",postion);dialog.show(getFragmentManager(), "dialog");return false;}});}showDetails(0);// 預設顯示第一個}@Overridepublic void onSaveInstanceState(Bundle outState){super.onSaveInstanceState(outState);outState.putInt("curChoice", mCurCheckPosition);}@Overridepublic void onListItemClick(ListView l, View v, int position, long id){super.onListItemClick(l, v, position, id);showDetails(position);}void showDetails(int index){mCurCheckPosition = index;getListView().setItemChecked(index, true);DetailsFragment details =(DetailsFragment) getFragmentManager().findFragmentById(R.id.details);if (details == null || details.getShownIndex() != index){details = DetailsFragment.newInstance(mCurCheckPosition, list);FragmentTransaction ft = getFragmentManager().beginTransaction();ft.replace(R.id.details, details);ft.commit();}}public void deleteListItem(int postion){list.remove(postion);mAdapter.refearch(list);}callBack mInvock1 = new callBack(){@Overridepublic void callInvock(){mAdapter.refearch(list);}};public interface callBack{void callInvock();}}
DetailsFragment.java
package com.xuzhi.fragment;import java.util.ArrayList;import java.util.List;import android.app.Fragment;import android.os.Bundle;import android.util.TypedValue;import android.view.LayoutInflater;import android.view.Menu;import android.view.MenuInflater;import android.view.MenuItem;import android.view.View;import android.view.ViewGroup;import android.widget.ScrollView;import android.widget.TextView;import android.widget.Toast;public class DetailsFragment extends Fragment{private static List<String> list = new ArrayList<String>();@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setHasOptionsMenu(true);}public static DetailsFragment newInstance(int index, List<String> li){list = li;DetailsFragment details = new DetailsFragment();Bundle args = new Bundle();args.putInt("index", index);details.setArguments(args);return details;}public int getShownIndex(){return getArguments().getInt("index", 0);}@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState){// TODO Auto-generated method stubif (container == null)return null;if (list.size() == 0){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(list.get(getShownIndex()));return scroller;}@Overridepublic void onCreateOptionsMenu(Menu menu, MenuInflater inflater){// TODO Auto-generated method stubsuper.onCreateOptionsMenu(menu, inflater);menu.add("Menu 1a").setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);menu.add("Menu 1b").setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);}@Overridepublic boolean onOptionsItemSelected(MenuItem item){// TODO Auto-generated method stubToast.makeText(getActivity(),"index is" + getShownIndex() + " && menu text is "+ item.getTitle(), 1000).show();return super.onOptionsItemSelected(item);}}
MyDialogFragment.java
package com.xuzhi.fragment;import android.app.AlertDialog;import android.app.Dialog;import android.app.DialogFragment;import android.content.DialogInterface;import android.os.Bundle;public class MyDialogFragment extends DialogFragment{public static MyDialogFragment newInstance(String title, int position){MyDialogFragment frag = new MyDialogFragment();Bundle args = new Bundle();args.putString("title", title);args.putInt("position", position);frag.setArguments(args);return frag;}public Dialog onCreateDialog(Bundle saveInstanceState){// 擷取對象執行個體化時傳入的視窗標題。String title = getArguments().getString("title");// 返回提醒對話方塊。return new AlertDialog.Builder(getActivity())// 設定標題表徵圖.setIcon(R.drawable.ic_launcher)// 設定標題.setTitle(title)// 設定確定按鈕的標題和點擊事件監聽器。.setPositiveButton("確定", new DialogInterface.OnClickListener(){@Overridepublic void onClick(DialogInterface dialog, int which){int position = getArguments().getInt("position");((TitlesFragment) (getFragmentManager().findFragmentByTag("title"))).deleteListItem(position);}})// 設定取消按鈕的標題和點擊事件監聽器。.setNegativeButton("取消", new DialogInterface.OnClickListener(){@Overridepublic void onClick(DialogInterface dialog, int which){}})// 建立對話方塊.create();}}
adapter.java
package com.xuzhi.fragment;import java.util.List;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.TextView;public class adapter extends BaseAdapter{private List<String> list;private Context mContext;public adapter(List<String> list, Context c){this.list = list;this.mContext = c;}public void refearch(List<String> li){this.list=li;this.notifyDataSetChanged();}@Overridepublic int getCount(){// TODO Auto-generated method stubreturn list.size();}@Overridepublic Object getItem(int arg0){// TODO Auto-generated method stubreturn list.get(arg0);}@Overridepublic long getItemId(int arg0){// TODO Auto-generated method stubreturn arg0;}@Overridepublic View getView(int arg0, View view, ViewGroup arg2){// TODO Auto-generated method stubview = LayoutInflater.from(mContext).inflate(R.layout.title, null);TextView txt = (TextView) view.findViewById(R.id.button);txt.setText(list.get(arg0));return view;}}
FragmentDemoActivity.java
package com.xuzhi.fragment;import android.app.Activity;import android.app.FragmentManager;import android.app.FragmentTransaction;import android.os.Bundle;public class FragmentDemoActivity extends Activity{@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);init();}private void init(){TitlesFragment title;title =(TitlesFragment) getFragmentManager().findFragmentById(R.id.titles);if (title == null){title = TitlesFragment.newInstance();FragmentManager fm = getFragmentManager();FragmentTransaction ft = fm.beginTransaction();ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);ft.add(title, "title");// 設定title標記,方便用到的時候根據標記取出來ft.commit();}}}