CC's blog

CC的技术博客 专注于 it 互联网的技术爱好者

Fragment 使用

许多初学者接触Android的时候都会发现,当下版本的ADT再创建 android application project的时候,跟许多教材和网上的教程存在差异,比如说res/layout目录下有两个xml文件,而不是教程里面的一个.

而在这个时候,如果大家按照教程上的方法,在src目录下的MainActivity.java中的 protected void on Create(Bundle saveInstanceState)

方法中直接对控件fragment_main.xml中的控件,比如Button,TextView等进行操作的话,大家就会发现,当对控件设置监听器的时候,例如:

button.setOnClickListener(new OnClickListener()){}

程序是不会报错的.可是当大家在虚拟机上或者手机上run的时候.程序就会闪退,在虚拟机上还会弹出报错对话框.

其实,这是因为大家创建的控件实在fragment_main.xml里面的, 而

protected void on Create(Bundle saveInstanceState)

方法是与activity_main.xml关联的,程序运行的时候,找不到控件

其实新建的android application project已经在MainActivity.java中已经为我们创建了与fragment_main.xml对应的类,就在MainActivity.java类的下面

public static class PlaceHolderFragment extends Fragment

在这个类的方法:

public view onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState )

中,大家可以看到,方法中已经自动帮你得到了fragment_main的view:

View rootView = inflater.inflate(R.layout.fragment_main, container, false);

这个时候,大家直接在下面对控件进行操作即可, 例如:

public view onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState ){
View rootView = inflater.inflate(R.layout.fragment_main, container, false);
TextView textView = (TextView)rootView.findViewById(R.id.textView);
textView.setText(“laugh”);
Return rootView;
}

然后大家就可以看到,在设备上,程序成功run起来了.


none

仅有一条评论

  1. CC CC

    哈哈

添加新评论