android--接触fragment

学习《android变成权威指南》fragment的使用,这篇文章并没有让我读懂fragment到底好处在哪里,所以只是记录如何使用最基本的fragment,仅为自己理解和记忆用。

1.创建Crime实体类,用于记录习惯

public class Crime {
	private UUID mId;
	private String title;

	public Crime() {
		super();
		this.mId = UUID.randomUUID();
	}

	public UUID getmId() {
		return mId;
	}

	public String getTitle() {
		return title;
	}

	public void setTitle(String title) {
		this.title = title;
	}
}

2.创建fragment_crime.xml,根据自己的布局显示自己写布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
     >

    <EditText
        android:id="@+id/crime_title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="@string/criminal_title_hint" />

</LinearLayout>

3.创建CrimeFragment继承Fragmen这个很重要

public class CrimeFragment extends Fragment {

	private Crime mCrime;
	private EditText mTitleField;
	//private Button mDateButton;
	//private CheckBox mSolvedCheckBox;
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		mCrime = new Crime();
	}
  
	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
	        //通过inflater获取fragment布局
		View view = inflater.inflate(R.layout.fragment_crime, container,false);
		//通过fragment布局找到EditText
		mTitleField = (EditText) view.findViewById(R.id.crime_title);
		//为EditText设置监听
		mTitleField.addTextChangedListener(new TextWatcher() {
			
			@Override
			public void onTextChanged(CharSequence s, int start, int before, int count) {
				mCrime.setTitle(s.toString().trim());
			}
			
			@Override
			public void beforeTextChanged(CharSequence s, int start, int count, int after) {
				// TODO Auto-generated method stub
				
			}
			
			@Override
			public void afterTextChanged(Editable s) {
				// TODO Auto-generated method stub
				
			}
		});
		return view;
	}
}

    4.让Fragment显示出来,就是让fragment由CriminalActivity管理,首先创建Activity和布局文件:

public class CriminalActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_crime);
		//如果是API11以上的版本就直接getFragmentManager
		FragmentManager fm = getFragmentManager();
		Fragment fragment = fm.findFragmentById(R.id.fragmentContainer);
		if (fragment == null) {
			fragment = new CrimeFragment();
			//获取事务并将fragment添加到Activity的布局文件中,这里涉及到队列问题还没搞明白
			fm.beginTransaction().add(R.id.fragmentContainer, fragment).commit();
		}
	}
}
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/fragmentContainer"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >
    
</FrameLayout>

以上就是初步使用fragment的步骤,我相信通过后面的学习会更加深入的理解fragment的以及其生命周期。

你可能感兴趣的:(android--接触fragment)