Android之子Fragment修改父Activity控件

本文详细介绍如何在Android开发中,从子Fragment修改父Activity中的控件,包括动态加载Fragment和在onAttach()方法中获取Activity控件引用的步骤。同时,针对在平板设备上高频切换Activity导致控件空指针的问题,提供了解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Activity中嵌套几个Fragment是再正常不过的需求了,若要在子Fragment修改父Activity中的控件,则需要获得该控件的引用。

第一步,在Activity里动态加载Fragment:

BlankFragment blankFragment = new BlankFragment();         
FragmentManager fragmentManager = getSupportFragmentManager();         
FragmentTransaction beginTransaction = fragmentManager.beginTransaction();
beginTransaction.add(R.id.fragmentcontent, blankFragment);
beginTransaction.addToBackStack(null);
beginTransaction.commit(); 

第二步,在Fragment里的onAttach()方法中获得Activity的控件引用

@Override 
public void onAttach(Activity activity) {
    // TODO Auto-generated method stub 
    super.onAttach(activity); 
    if (activity instanceof MainActivity) {            
        MainActivity mainActivity = (MainActivity) activity;            
        textView = (TextView) mainActivity.findViewById(R.id.textView);        
    } 
} 

最后,可以在Fragment里修改父Activity中的TextView控件了。

注:以上的方法很简单,但是有时会导致控件空指针:

亲测:在平板开发,高频打开、关闭该Activity页面,导致控件空指针。

可以在使用该父类控件时,进行判断是否为空。

if (textView == null){                                 
    textView = getActivity().findViewById(R.id.textView);
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值