在Android中将数据从基本活动发送到片段[重复]

Posted

技术标签:

【中文标题】在Android中将数据从基本活动发送到片段[重复]【英文标题】:Sending data from Base Activity to Fragment in Android [duplicate] 【发布时间】:2017-02-06 07:24:11 【问题描述】:

我有一个关于片段的问题。 场景是:登录后,我正在进行一个有 3 个片段的活动。对于片段,我使用了 ViewPager。现在我必须在我的片段之一中使用登录用户名。我已经使用 putExtra 从登录页面购买了用户名。我的问题是如何将该用户名带到片段中??

【问题讨论】:

将它们打包并传递给您的片段。我建议您为此使用共享首选项。 你为什么不为此使用共享偏好? 你是对的。也可以这样做,但我做了捆绑的事情,但在片段中得到了空指针异常。任何想法! 不知道如何使用共享偏好。 分享代码sn-p会有帮助 【参考方案1】:

从您的 BaseActivity 使用 intent 发送数据:

Bundle bundle = new Bundle();
bundle.putString("username", "From your BaseActivity");
// set Fragmentclass Arguments
Fragmentclass fragmentclass = new Fragmentclass();
fragmentclass .setArguments(bundle);

在你的 Fragment onCreatView 方法中:

@Override
 public View onCreateView(LayoutInflater inflater, ViewGroup container,
    Bundle savedInstanceState) 
    String username= getArguments().getString("username");    
    return inflater.inflate(R.layout.yourFragment, container, false);

【讨论】:

它在我们将值存储在字符串中的行的片段中显示空指针异常。 @ArmanReyaz 您应该在将片段添加到您的活动之前设置捆绑包【参考方案2】:

您也可以使用 SharedPreferences。 将用户名或您想要保存的任何内容存储在 SharedPreferences 中,并在应用程序的任何位置使用它。 供您参考SharedPreferences Tutorials

【讨论】:

【参考方案3】:

从您的活动中,您可以发送有意图的数据:

Bundle bundle = new Bundle();
bundle.putString("username", "abcd");
// set Fragmentclass Arguments
FragmentClass frag_one = new Fragmentclass();
frag_one.setArguments(bundle);

并在 Fragment onCreateView 方法中添加以下代码:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
    Bundle savedInstanceState) 
String strtext = getArguments().getString("username");    
return inflater.inflate(R.layout.fragment_layout, container, false);

【讨论】:

它在我们将值存储在字符串中的行的片段中显示空指针异常。 @ArmanReyaz 你可以试试 String strtext = this.getArguments().getString("username");

以上是关于在Android中将数据从基本活动发送到片段[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在 android studio kotlin 中将数据从活动传递到片段(不重复,这些方法不起作用)

将数据从活动发送到片段android工作室[重复]

发送从活动数据到片段:NPE [重复]

Java Android - 将数据从活动发送到片段

如何在android中将图像从一个活动发送到另一个活动?

如何将数据从一个片段传输到另一个片段android