当前位置: 首页 > 知识库问答 >
问题:

如何将变量从活动传递到片段,并将其传回?

邵兴文
2023-03-14

我目前正在制作一个android应用程序,我想在activity和fragment之间传递一个日期。我的活动有一个按钮,打开片段:DatePickerFragment。

在我的活动中,我显示了一个日期,我想用片段修改它。因此,我想将日期传递给datepicker,并将其发送回活动。

我已经尝试了很多解决方案,但都没有奏效。简单的方法是传递一个参数,但这不能用片段来完成。

共有3个答案

邹星火
2023-03-14

多亏了 @ρяσѕρєя K和Terry...这对我帮助很大,效果很好

从“活动”发送数据,目的是:

Bundle bundle = new Bundle(); 
bundle.putString("edttext", "From Activity"); 
// set Fragmentclass Arguments
Fragmentclass fragobj = new Fragmentclass();
fragobj.setArguments(bundle);

在Fragment onCreateView方法中:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    // get arguments
    String strtext = getArguments().getString("edttext");    
    return inflater.inflate(R.layout.fragment, container, false);
}

参考:在android中将数据从活动发送到片段

萧阳波
2023-03-14

活动:

Bundle bundle = new Bundle();
String myMessage = "Stackoverflow is cool!";
bundle.putString("message", myMessage );
FragmentClass fragInfo = new FragmentClass();
fragInfo.setArguments(bundle);
transaction.replace(R.id.fragment_single, fragInfo);
transaction.commit();

片段:

读取片段中的值

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    String myValue = this.getArguments().getString("message");
    ...
    ...
    ...
}

但是如果你想把值从片段发送到活动,阅读jpardogo的答案,你必须需要接口,更多信息:与其他片段通信

裴翰学
2023-03-14

要将信息传递给片段,请在创建片段时设置参数,稍后可以在片段的方法onCreate或onCreateView上检索此参数。

在片段的newInstance函数上,您添加要发送给它的参数:

/**
 * Create a new instance of DetailsFragment, initialized to
 * show the text at 'index'.
 */
public static DetailsFragment newInstance(int index) {
    DetailsFragment f = new DetailsFragment();
    // Supply index input as an argument.
    Bundle args = new Bundle();
    args.putInt("index", index);
    f.setArguments(args);
    return f;
}

然后在方法onCreate或onCreateView的片段中,可以检索如下参数:

Bundle args = getArguments();
int index = args.getInt("index", 0);

如果现在希望从片段与活动通信(发送或不发送数据),则需要使用接口。在片段间通信的文档教程中,您可以很好地解释这种方法。由于所有片段都通过活动相互通信,因此在本教程中,您可以看到如何将实际片段中的数据发送到他的活动容器,以便在活动中使用此数据,或将其发送到活动包含的另一个片段。

文档教程:

http://developer.android.com/training/basics/fragments/communicating.html

 类似资料:
  • 我一直试图使用bundle将数据从主活动传递到片段。我已经使用TabLayout和ViewPager以Tab格式添加活动的片段。我没有得到任何错误,但我得到一个null对象作为返回,它显示“错误”在我的第一个片段,因为我已经添加了一个If条件为null对象。这是我的密码 谁能建议我为什么从主活动到片段得到一个空对象,以及如何将多个数据从主活动转移到其他片段,也就是第二和第三个片段。

  • 当我关闭一个活动时,我希望它将一个值传递给另一个活动中的一个片段,我该怎么做? 活动B 片段A 代码不起作用,因为它给了我一个错误 谢啦

  • 问题内容: 如何将值从javascript变量传递到razor变量,asp.net mvc razor视图引擎是否可能? 问题答案: 你不能 原因是他们不在同一时间“生活”。Razor变量是“服务器端变量”,在将页面发送到“客户端”后,它们不再存在。 当服务器收到视图请求时,它仅使用HTML,CSS和Javascript代码创建视图。没有C#代码,所有这些都被“翻译”为客户端语言。 当视图仍在服务

  • 问题内容: 我需要在单击recyclerview的图像时将数据从传递 到 。有人可以帮忙吗? 问题答案: 创建一个侦听器接口,然后让您的MainActivity实现它。这样,您可以在onClick方法中调用回调方法。 接口: 主要活动: 您的VideoAdapter:

  • 我使用Sharedprefs将一个变量从接收者传递到活动。它似乎是正确的,如果我关闭并重新启动应用程序,我可以看到接收器已写入Sharedprefs和活动可以读取最后写入的值。但当应用程序运行时,变量不会更改。它不会从接收器获取值。 这是我的代码从接收器: 这是活动的代码: 那怎么了?为什么接收器不能在应用程序关闭前写入? 顺便说一句,我还在同一个应用程序中的一个单独的服务上读取这个共享的pref

  • 问题内容: 我正在使用收缩路线https://npmjs.org/package/shrinkroute在nodejs中建立链接。我收到错误500 ReferenceError:收缩器未定义 如何将rinkeroute传递给routes / index.js?有没有更好的方法通过传递查询字符串args创建url? 问题答案: 一种解决方案是使用以下方法存储在您的应用程序对象中: 在中,您可以通过或