\"在这里插入图片描述\"
activity_crime.

<?  version=\"1.0\" encoding=\"utf-8\"?>
< Layout
     ns:android=\"http://schemas.android.com/apk/res/android\"
     ns:app=\"http://schemas.android.com/apk/res-auto\"
     ns:tools=\"http://schemas.android.com/tools\"
    android:id=\"@+id/fragment_container\"
    android:layout_width=\"match_parent\"
    android:layout_height=\"match_parent\"
    tools:context=\"com.study.android.criminalintent.CrimeActivity\">
</ Layout>

fragment_crime.

<?  version=\"1.0\" encoding=\"utf-8\"?>
<LinearLayout
     ns:android=\"http://schemas.android.com/apk/res/android\"
    android:layout_width=\"match_parent\"
    android:layout_height=\"match_parent\"
    android:layout_margin=\"16dp\"
    android:orientation=\"vertical\">

    <TextView
        style=\"@style/listSparatorTextViewStyle\"
        android:text=\"@string/crime_ _lable\"/>

    <EditText
        android:id=\"@+id/crime_ \"
        android:layout_width=\"match_parent\"
        android:layout_height=\"wrap_content\"
        android:hint=\"@string/crime_ _hint\"/>

    <TextView style=\"@style/listSparatorTextViewStyle\"
              android:text=\"@string/crime_details_lable\"/>

    <Button
        android:id=\"@+id/crime_date\"
        android:layout_width=\"match_parent\"
        android:layout_height=\"wrap_content\"/>

    <CheckBox
        android:id=\"@+id/crime_solved\"
        android:layout_width=\"match_parent\"
        android:layout_height=\"wrap_content\"
        android:text=\"@string/crime_solved_lable\"/>
</LinearLayout>

Crime .java

public class Crime {
    /*UUID是Android框架里的Java工具类。有了它,产生唯一ID值就方便多了。在构造方法里,调
    用UUID.randomUUID()产生一个随机唯一ID值。*/
    private UUID mId;
    private String m ;
    private Date mDate;
    private boolean mSolved;

    public Crime() {
        mId = UUID.randomUUID();
        mDate = new Date();
    }

    //使用快捷键Alt+Shift+Insert-->Gettet And Setter即可生成set、get方法
    public UUID getId() {
        return mId;
    }

    public String get () {
        return m ;
    }

    public Crime set (String  ) {
        m  =  ;
        return this;
    }

    public Date getDate() {
        return mDate;
    }

    public Crime setDate(Date date) {
        mDate = date;
        return this;
    }

    public boolean isSolved() {
        return mSolved;
    }

    public Crime setSolved(boolean solved) {
        mSolved = solved;
        return this;
    }
}

CrimeActivity .java

package com.study.android.criminalintent;

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class CrimeActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_crime);

        //创建一个新的fragment事务,执行一个fragment添加操作,然后提交该事务
        FragmentManager fm = getSupportFragmentManager();
        Fragment fragment = fm.findFragmentById(R.id.fragment_container);
        /**
         * 为什么要获取的fragment可能有了呢?设备旋转或回收内存时,Android系统会销
         毁CrimeActivity,而后重建时,会调用CrimeActivity.onCreate(Bundle)方法。activity被
         销毁时,它的FragmentManager会将fragment队列保存下来。这样,activity重建时,新的
         FragmentManager会首先获取保存的队列,然后重建fragment队列,从而恢复到原来的状态。
         */
        if (fragment == null) {
            fragment = new CrimeFragment();
            fm.beginTransaction()
                    //参数一:容器视图资源ID 参数二:创建的fragment
                    .add(R.id.fragment_container, fragment)
                    .commit();
        }
    }
}

CrimeFragment .java

package com.study.android.criminalintent;

import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.EditText;

/**
 * @time 2018/12/19  15:08
 * @desc ${TODD}
 */
//此处选择支持库版的fragment
public class CrimeFragment extends Fragment {

    private Crime mCrime;
    private EditText m Field;
    private Button mDateButton;
    private CheckBox mSolvedCheckBox;

    /**
     * Fragment.onCreateView(...)方法中的组件引用几乎等同于Activity.onCreate(Bundle)
     * 方法的处理。唯一的区别是,你调用了fragment视图的View.findViewById(int)方法。以前使
     * 用的Activity.findViewById(int)方法十分便利,能够在后台自动调用View.findViewById
     * (int)方法,而Fragment类没有对应的便利方法,因此必须手动调用。
     *
     * @param savedInstanceState
     */
    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mCrime = new Crime();
    }

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        //第一个参数是布局资源文件
        //第二个参数是视图的父视图,我们通常需要父视图来正确配置组件。
        //第三个参数告诉布局生成器是否将生成的视图添加给父视图。这里,传入了false参数,因为我们将以代码的方式添加视图。
        View view = inflater.inflate(R.layout.fragment_crime, container, false);
        initView(view);
        m Field.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

            }

            @Override
            public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
                //(代表用户输入)的toString()方法
                mCrime.set (charSequence.toString());
            }

            @Override
            public void afterTextChanged(Editable editable) {

            }
        });

        mDateButton.setText(mCrime.getDate().toString());
        //禁用Button按钮,确保它不会响应用户的点击。按钮应处于灰色状,让用户知道是不可以按的
        mDateButton.setEnabled(false);

        mSolvedCheckBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
                mCrime.setSolved(isChecked);
            }
        });
        return view;
    }

    private void initView(View view) {
        m Field = view.findViewById(R.id.crime_ );
        mDateButton = view.findViewById(R.id.crime_date);
        mSolvedCheckBox = view.findViewById(R.id.crime_solved);
    }

}

收藏 打印