Android中Fragment和Activity之间的数据共享

2024-03-17

我以前问过类似的问题,但没有得到答案,似乎许多其他人正在寻找答案。所以我提出这个问题,希望能得到一个明确的答案,让每个人都能从中受益。

我有一个包含 2 个片段的活动。我希望fragment2在选中复选框时在Activity中设置一个布尔变量,以便fragment1可以知道该复选框是否被选中。

这是我的代码:

活动:

public class modestab extends Activity{
    public static Context appContext;

    public boolean lf=false;

    public void onCreate(Bundle savedInstanceState){
        appContext=this;
super.onCreate(savedInstanceState);
ActionBar tabbar= getActionBar();
        tabbar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
        ActionBar.Tab ModesTab =tabbar.newTab().setText("Modes");
        ActionBar.Tab CatTab =tabbar.newTab().setText("Categories");

        Fragment ModesFragment =new modes();
        Fragment CatFragment =new cats();

        ModesTab.setTabListener(new MyTabsListener(ModesFragment));
        CattTab.setTabListener(new MyTabsListener(CatFragment));

        tabbar.addTab(ModesTab);
        tabbar.addTab(CatTab);


    }

片段 1:(我想读取上面 Activity 中 set 的布尔值:

@TargetApi(11)
public class tabmodes extends Fragment{
@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    {
View V=inflater.inflate(R.layout.tab_modes, container, false);
button1.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                if(lf==false) //lf here is the lf in Activity which I want to get

片段2:我想在Activity中设置lf的位置

.....
lifecheck.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener(){
              @Override
                public void onCheckedChanged(CompoundButton buttonView,
                        boolean isChecked) {
                  if(lifecheck.isChecked())
                      getActivity().lf=true;//Where I want to set the lf flag in Activity
                  ;
              }
          });

该代码无法编译,我不知道如何在活动中设置 lf 也不知道如何读取它。有人建议我执行 getActivity() 但我看不到该变量。

我尝试创建一个函数 setlf(boolean jk) 但我也看不到它......

欢迎任何帮助:)


很多方法 :

1) 活动 -> 片段

  • 在您的活动中:创建一个包并使用分段。设置参数(捆绑) http://developer.android.com/reference/android/app/Fragment.html#setArguments%28android.os.Bundle%29
  • 在你的片段中 : use 捆绑捆绑 =获取参数() http://developer.android.com/reference/android/app/Fragment.html#getArguments%28%29

2) 活动 -> 片段

  • 在你的片段中: 创建一个公共方法

  • 在您的活动中: 致电active片段公共方法:

    获取SupportFragmentManager http://developer.android.com/reference/android/support/v4/app/FragmentActivity.html#getSupportFragmentManager%28%29().通过Id查找Fragment http://developer.android.com/reference/android/app/FragmentManager.html#findFragmentById%28int%29(R.id.your_fragment).publicMethod(args)

3) 片段 -> 活动

  • 在你的片段中:使用 getter 和 setter 方法创建 un 接口(回调方法 http://developer.android.com/guide/components/fragments.html#CommunicatingWithActivity)
  • 在您的活动中: 实现接口

4) 片段 -> 活动

  • 在您的活动中:创建公共getter和setter或其他方法
  • 在你的片段中:使用以下方式调用公共活动 getter、setter 或其他方法:

    获取活动() http://developer.android.com/reference/android/support/v4/app/Fragment.html#getActivity%28%29。取得一些东西(),获取活动() http://developer.android.com/reference/android/support/v4/app/Fragment.html#getActivity%28%29.setSomething(args) 或获取活动() http://developer.android.com/reference/android/support/v4/app/Fragment.html#getActivity%28%29.someMethod(参数)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android中Fragment和Activity之间的数据共享 的相关文章

随机推荐

  • 在 Windows 7 32 位 SP1 上安装 Python 3.8

    我无法在 Windows 7 32 位 SP1 上安装 Python 3 8 错误日志显示detected windows 7 sp1 without kb2533625我一整天都在搜索这个更新 但没有找到任何帮助 我认为这是 Python
  • “沟通”扩展中的内容js和后台js文件

    我正在编写扩展程序 遇到一个问题 我无法将数据从扩展程序菜单发送到content js 在扩展菜单中 我有一些直觉 填写并单击按钮后 我写下它们的值 我想将它们发送到content js该数据将用于实施html但由于某种原因 数据没有发送
  • Ansible 将变量传递给角色

    我想根据环境和主机名创建文件夹 用户和组 我的剧本将环境和主机名传递给角色 该角色应该从 defaults main yml 文件中选择正确的数据 剧本 roles role myrole environment xxx hostname
  • cakephp 如何将 bootstrap 框架 css 样式包含到我的应用程序中?

    有人将 cake php 与 bootstrap 框架 css 风格集成在一起吗 我希望能够在 cakephp 视图中使用 bootstrap 的优点 像 btn 和面板引导样式 https i stack imgur com dnQyD
  • Visual Studio Community 2017 中的条件参考

    我正在创建一个多平台应用程序 我有一个多目标共享库 针对 netstandard 2 0 和 net 4 5 请参阅项目文件
  • 自动映射器合并对象问题

    让自动映射器工作后 上一个问题 https stackoverflow com questions 36602430 automapper complex types mapping exception 我正在解决另一个问题 把它带到另一个
  • isNaN(1) 和 isNaN("1") 返回 false

    为什么在我下面的截图中isNaN 1 and isNaN 1 回报false 由于其中之一是数字 其中之一是字符串 因此 isNaN 1 应该返回 true From MDN https developer mozilla org en U
  • 如何跨架构使用 python-poetry?

    我的主要开发机器是x86 64虽然我的一些部署环境是arm7vl 树莓派 对于大多数 Python 开发来说 这不是问题 但某些 Python 库只能在PyPI https pypi org for x86 64 or piwheels h
  • 适用于 Linux 的与语言无关的正确制表符代码编辑器?

    我需要一个 Linux 文本编辑器来替换 Textpad 4 7 3 一个 Windows nagware 应用程序 但我尝试过的所有替代方案要么臃肿要么不完整 以下是我认为最重要的功能 按降序排列 正则表达式搜索 标记和替换 甚至跨所有打
  • C++ 通用回调实现

    我有一段代码 它以 XML 的形式从 flash 播放器获取消息 将它们解析为函数和参数 并调用该函数的已注册回调 我想要替换的代码片段是做得很好 几乎 的通用回调机制 flashSDK 的通用回调实现代码 ASInterface inl
  • 更改 Laravel 中的资产助手 url

    The asset or URL asset 将指向http my url public 在默认情况下 有什么办法可以改变urlasset to http my url public assets 我有很多资产文件 我应该在我的刀片模板中使
  • 为什么在指定所有模板参数都有默认值的模板类时需要 <> ?

    有充分的理由吗 lt gt 当指定一个其所有模板参数都有默认值的模板类时是否需要 e g include
  • 如何编写抛出异常的方法头

    鉴于 FileInputStream 的构造函数抛出 FileNotFoundException 它是 FileInputStream 的子类 异常 为带有 String 参数的名为 process 的公共方法编写标头 并且什么也不返回 其
  • C++ 中聚合的带括号初始化的模板参数推导

    在下面的代码中有一个初始化A
  • 在phonegap项目中停止iframe重定向/打开移动Safari

    目前 我一直在将页面加载到我的phonegap项目中的隐藏iframe中 作为从我在应用程序中使用的网站的移动版本中抓取数据的一种方式 问题在于 某个特定网站具有某种类型的框架破坏程序 并发送退出应用程序并在移动 Safari 中加载页面的
  • 球体表面上的射线-多边形交点

    我有一个点 纬度 经度 和一个以度为单位的航向 正北 该点沿着该点行进 我有许多固定多边形 以纬度 经度定义的点 它们可能是凸的 也可能不是凸的 我的问题是 如何计算与多边形最近的交点 如果有 我看过一些关于光线追踪的令人困惑的帖子 但当光
  • 我正在尝试获取某个值的 Xpath,但出现嵌套条件错误

    我试图通过为条件提供唯一值 U003 O100 001T 609644 来从多个 ViewItem 中查找带有值 1900310 谓词的 XPath 表达式 请看下面的代码 ID 1900310 值 gt 子类型 U003 O100 00I
  • Android 和 Robotium - 需要额外的测试活动吗?

    在我看来 robotium 的设计方式是一次测试 1 个 Activity 而不是整个应用程序 所以我的问题是如何测试一个需要额外传递给它的活动 我的意思是额外的intent putExtra Something object 方法设置活动
  • 当我尝试使用 Hyperledger Fabric 创建通道时,请求失败

    当我尝试使用 Hyperledger Fabric 创建通道时 请求失败并返回以下错误 客户端日志 错误 获得意外状态 BAD REQUEST 验证新通道创建事务时出错 通道 testchannel 无法成功应用模板配置更新 错误 授权更新
  • Android中Fragment和Activity之间的数据共享

    我以前问过类似的问题 但没有得到答案 似乎许多其他人正在寻找答案 所以我提出这个问题 希望能得到一个明确的答案 让每个人都能从中受益 我有一个包含 2 个片段的活动 我希望fragment2在选中复选框时在Activity中设置一个布尔变量