这个例子是从Android权威编程指南第七章开始。
效果:
- 将这个界面显示在fragment中,并将fragment添加到activity中。
- xml代码
fragment_crime
<?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="vertical"
android:layout_margin="16dp"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="?android:listSeparatorTextViewStyle"
android:text="@string/title_name"
/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/title_hint"
android:id="@+id/crime_title"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="?android:listSeparatorTextViewStyle"
android:text="@string/details"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/crime_date"/>
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/issolved"
android:id="@+id/crime_solved"/>
</LinearLayout>
- 以及container容器代码,这个容器用于存放fragment,是CrimeActivity的layout文件,将crime_fragment添加到容器中,fragments的界面内容就可以通过activity显示出来。
crime_activity:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/crime_container">
</FrameLayout>
- 接下来编写实体类
如代码所示,存放的是每一个fragment的id(独一无二),crime的标题,时间,以及是否被解决的情况
import java.util.Date;
import java.util.UUID;
public class Crime {
private UUID id;//专门用于生成唯一id
private String mTitle;
private boolean isChecked;
private Date mDate;
public Crime(){
id=UUID.randomUUID();
mDate=new Date();
}
public UUID getId() {
return id;
}
public String getTitle() {
return mTitle;
}
public void setTitle(String title) {
mTitle = title;
}
public boolean isChecked() {
return isChecked;
}
public void setChecked(boolean checked) {
isChecked = checked;
}
public Date getDate() {
return mDate;
}
public void setDate(Date date) {
mDate = date;
}
}
- 接下来初始化控件,包括title,details,button,checkbox等
public class CrimeFragment extends Fragment {
Crime mCrime;
private EditText crime_title;
private Button crime_date;
private CheckBox isSolved;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.framgent_crime,container,false);
crime_title=(EditText)view.findViewById(R.id.crime_title);
crime_title.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
}
});
crime_date=(Button)view.findViewById(R.id.crime_date);
crime_date.setText(mCrime.getDate().toString());
crime_date.setEnabled(false);
isSolved=(CheckBox)view.findViewById(R.id.crime_solved);
isSolved.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
}
});
return view;
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mCrime=new Crime();
}
}
- 接下来是在activity中添加fragment
public class CrimeActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_crime);
FragmentManager fm=getSupportFragmentManager();
Fragment fragment=fm.findFragmentById(R.id.crime_container);
if(fragment==null){
fragment=new CrimeFragment();
fm.beginTransaction()
.add(R.id.crime_container,fragment)
.commit();
}
}
}