LayoutInflater.from这个方法layout什么意思思

也许你感兴趣
1. 2. 3. 4. 5. 6. 7. 8. 9. 10.Android编程心得-FragmentActivity与Fragment两者交互方法简介 - 推酷
Android编程心得-FragmentActivity与Fragment两者交互方法简介
在Android4.0后很多时候我们会大量使用到Fragment,Fragment与Activity的交互应该来说是非常重要的,但目前很多实例方法都只介绍了Fragment与Activity交互的方法,没有Activity与Fragment交互的方法,下面我来把解决的思路记录如下。
1.首先我需要定义一个公共接口,用于将Fragment与FragmentActivity中的控件进行交互
public interface IBtnCallListener {
public void transfermsg();
2.当fragment中的Button控件需要与FragmentActivity中的Button控件交互时,在Fragment对应的子类中定义
public class LaunchUIFragment extends Fragment implements IBtnCallListener{
IBtnCallListener mbtnL
private Button btn_C
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_selection_launch, container, false);
btn_Click=(Button) rootView.findViewById(R.id.bt_click);
btn_Click.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
mbtnListener.transfermsg();
return rootV
public void onActivityCreated(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onActivityCreated(savedInstanceState);
public void onAttach(Activity activity) {
// TODO Auto-generated method stub
mbtnListener=(IBtnCallListener)
} catch (Exception e) {
// TODO: handle exception
throw new ClassCastException(activity.toString() + &must implement mbtnListener&);
super.onAttach(activity);
public void transfermsg() {
// TODO Auto-generated method stub
System.out.println(&由Activity传输过来的信息&);
同时在FragmentActivity中对应相应
public class MainActivity extends FragmentActivity implements IBtnCallListener{
public static final String ARGUMENTS_NAME = &arg&;
private RelativeLayout rl_
private SyncHorizontalScrollView mH
private RadioGroup rg_nav_
private ImageView iv_nav_
private ImageView iv_nav_
private ImageView iv_nav_
private ViewPager mViewP
private int indicatorW
public static String[] tabTitle = { &选项1&, &选项2&, &选项3&, &选项4&, &选项5& }; //标题
private LayoutInflater mI
private TabFragmentPagerAdapter mA
private int currentIndicatorLeft = 0;
private Button Btn_T
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById();
initView();
setListener();
private void setListener() {
mViewPager.setOnPageChangeListener(new OnPageChangeListener() {
public void onPageSelected(int position) {
if(rg_nav_content!=null && rg_nav_content.getChildCount()&position){
((RadioButton)rg_nav_content.getChildAt(position)).performClick();
public void onPageScrolled(int arg0, float arg1, int arg2) {
public void onPageScrollStateChanged(int arg0) {
rg_nav_content.setOnCheckedChangeListener(new OnCheckedChangeListener() {
public void onCheckedChanged(RadioGroup group, int checkedId) {
if(rg_nav_content.getChildAt(checkedId)!=null){
TranslateAnimation animation = new TranslateAnimation(
currentIndicatorLeft ,
((RadioButton) rg_nav_content.getChildAt(checkedId)).getLeft(), 0f, 0f);
animation.setInterpolator(new LinearInterpolator());
animation.setDuration(100);
animation.setFillAfter(true);
//执行位移动画
iv_nav_indicator.startAnimation(animation);
mViewPager.setCurrentItem(checkedId); //ViewPager 跟随一起 切换
//记录当前 下标的距最左侧的 距离
currentIndicatorLeft = ((RadioButton) rg_nav_content.getChildAt(checkedId)).getLeft();
mHsv.smoothScrollTo(
(checkedId & 1 ? ((RadioButton) rg_nav_content.getChildAt(checkedId)).getLeft() : 0) - ((RadioButton) rg_nav_content.getChildAt(2)).getLeft(), 0);
private void initView() {
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
indicatorWidth = dm.widthPixels / 4;
LayoutParams cursor_Params = iv_nav_indicator.getLayoutParams();
cursor_Params.width = indicatorW// 初始化滑动下标的宽
iv_nav_indicator.setLayoutParams(cursor_Params);
mHsv.setSomeParam(rl_nav, iv_nav_left, iv_nav_right, this);
//获取布局填充器
mInflater = (LayoutInflater)this.getSystemService(LAYOUT_INFLATER_SERVICE);
//另一种方式获取
LayoutInflater mInflater = LayoutInflater.from(this);
initNavigationHSV();
mAdapter = new TabFragmentPagerAdapter(getSupportFragmentManager());
mViewPager.setAdapter(mAdapter);
Btn_Test=(Button) findViewById(R.id.btn_test);
Btn_Test.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
mBtnCallListener.transfermsg();
private IBtnCallListener mBtnCallL
public void onAttachFragment(Fragment fragment) {
// TODO Auto-generated method stub
mBtnCallListener=(IBtnCallListener)
} catch (Exception e) {
// TODO: handle exception
super.onAttachFragment(fragment);
public void transfermsg() {
// TODO Auto-generated method stub
System.out.println(&由Fragment传输过来的信息&);
private void initNavigationHSV() {
rg_nav_content.removeAllViews();
for(int i=0;i&tabTitle.i++){
RadioButton rb = (RadioButton) mInflater.inflate(R.layout.nav_radiogroup_item, null);
rb.setId(i);
rb.setText(tabTitle[i]);
rb.setLayoutParams(new LayoutParams(indicatorWidth,
LayoutParams.MATCH_PARENT));
rg_nav_content.addView(rb);
private void findViewById() {
rl_nav = (RelativeLayout) findViewById(R.id.rl_nav);
mHsv = (SyncHorizontalScrollView) findViewById(R.id.mHsv);
rg_nav_content = (RadioGroup) findViewById(R.id.rg_nav_content);
iv_nav_indicator = (ImageView) findViewById(R.id.iv_nav_indicator);
iv_nav_left = (ImageView) findViewById(R.id.iv_nav_left);
iv_nav_right = (ImageView) findViewById(R.id.iv_nav_right);
mViewPager = (ViewPager) findViewById(R.id.mViewPager);
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
public static class TabFragmentPagerAdapter extends FragmentPagerAdapter{
public TabFragmentPagerAdapter(FragmentManager fm) {
super(fm);
public Fragment getItem(int arg0) {
Fragment ft =
switch (arg0) {
ft = new LaunchUIFragment();
ft = new CommonUIFragment();
Bundle args = new Bundle();
args.putString(ARGUMENTS_NAME, tabTitle[arg0]);
ft.setArguments(args);
public int getCount() {
return tabTitle.
其中,主要部分是Fragment需要重写OnAttach方法,将接口对象实例化,同时在Activity要实现对应接口的方法,在该方法中实现你想要的功能,这样就可以由Fragment灵活交互FragmentActivity中的内容与控件了
Activity想要交互对应的Fragment也需要重写
Activity的OnAttachFragment方法,同时在
Fragment中
实现对应接口的方法,在该方法中实现你想要的功能,这样就可以由
中的内容与控件了 &(主要看没有注释的部分)
其实,交互的思路都是一样的,全都是通过一个公共的接口调用,在对应的地方实现。
已发表评论数()
&&登&&&陆&&
已收藏到推刊!
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见}

我要回帖

更多关于 tablelayout 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信