Android开发学习笔记

    在onCreateView(..)方法中,fragment的视图是直接通过调用LayoutInflater.inflate(..)方法并传入布局的资源ID生成的。第二个参数是视图的父视图,通常需要父视图来正确配置组件。第三个参数告诉布局生成器是否将生成的视图添加给父视图。
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState){
        View v =inflater.inflate(R.layout.fragment_crime,container,false);
return v;
}

    在fragment中实例化组件

    这里处理的是EditText组件。视图生成后,引用并为它添加对应的监听器方法

public class CrimeFragment extends Fragment {

    private Crime mCrime;
    private EditText mTitleFied;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState){
        View v =inflater.inflate(R.layout.fragment_crime,container,false);

        mTitleFied = (EditText)v.findViewById(R.id.crime_title);
        //mTitleFied.setText(mCrime.getTitle());
        mTitleFied.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                //This space intentionally left blank
            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
            mCrime.setTitle(s.toString());
            }

            @Override
            public void afterTextChanged(Editable s) {
                //This one too
            }
        });
        return v;
    }

    Fragment.onCreateView(..)方法中的组件几乎等同于Activity.onCreate(Bundle)方法的处理。唯一的区别是,你调用了fragment视图的View.findViewById(int)方法,而Fragment类没有对于对应的便利方法,因此必须手动的调用。

    fragment中监听器方法的设置和activity中完全一样。创建实现TextWatcher监听器接口的匿名内部类,如上面代码清代所示。TextWatcher有三个方法,不过现在只关注onTextChanged(..)方法。

    在onTextChanged(..)方法中,调用CharSequence(代表用户输入)的toString()方法。该方法会最后返回用来设置Crime标题的字符串。

    顺带一提的是在activity中,调用以下的方法引用已经生成的组件:

public View findViewById(int id)

    该方法以组件的资源ID作为参数,返回一个视图的对象。

例如,使用按钮的资源ID获取视图对象,赋值给对应的成员变量,如下面所示,注意的是,赋值前,必须现将返回的类型转化为Button。

mTrueButton = (Button)findViewById(R.id.true_button);

猜你喜欢

转载自blog.csdn.net/xihairanfeng/article/details/79886116