android動態使用FrameLayout(簡單使用)

來源:互聯網
上載者:User

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();}}}
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.