【问题标题】:Pass data from an Activity to a fragment [duplicate]将数据从活动传递到片段[重复]
【发布时间】:2020-09-24 19:02:22
【问题描述】:

我有点迷失了,所以我已经将数据从我的 LoginActivity 传递到了我的 DashboardActivity。它现在可以工作了(感谢上帝)。但现在,我很想将这些数据传递给片段。

我的 DashboardActivity 上有这个:

Intent get = getIntent();
String userId = get.getStringExtra(LoginActivity.EXTRA_ID);

Bundle bundle = new Bundle();
bundle.putString("userId", userId);
Fragment fragment = new Fragment();
fragment.setArguments(bundle);

我的 Fragment 上有这个:

Bundle bundle = getArguments();
String userId = bundle.getString("userId");
int uid = Integer.parseInt(userId);

是这样的吗?

【问题讨论】:

  • 这能回答你的问题吗? Send data from activity to fragment in Android
  • 这可能看起来很傻,但在这里:bundle.putString(userId) 我不能像这样传递它,或者我可以吗?
  • 你需要一把钥匙,就像你在你的问题中一样。

标签: java android retrofit2


【解决方案1】:

在 Fragment 和 Activity 中获取数据的方式不同。 要向片段发送额外内容,您可以这样做。

在你的活动类中

Bundle bundle = new Bundle();
bundle.putString("userId", "value you want to send");

FragmentClass frag = new FragmentClass();
frag.setArguments(bundle);

然后在Fragment onCreateView

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

你的代码的问题是你得到的参数有错误的 id。

正确的方法

String userId = getArguments().getString("userId");

【讨论】:

  • 我知道我要求的太多了。我刚刚更新了我的问题,应该是我在那里的方式吗?非常感谢您的回答。
  • 我的 DashoardFragment 崩溃是否正常? xD
  • 我相信我没有很好地定义我的 Fragment。喜欢,正确的方法。我不知道,因为我相信我遇到的问题是因为我将数据从我的活动传递到我的片段的方式。因为我在片段中得到的值为 null,而我可以在我的活动中打印 id。
【解决方案2】:

从activity到fragment你应该使用如下的bundle

Bundle bundle = new Bundle();
bundle.putString(LoginActivity.EXTRA_ID, "Extra value");
Fragment fragment = new Fragment();
fragment.setArguments(bundle);

然后在您的 Fragment 中,例如在 onCreate() 方法中获取数据

Bundle bundle = this.getArguments();
if (bundle != null) {
        String extraId = bundle.getString(key, defaultValue);
}

【讨论】:

  • 我很困惑,我通过 Intent 将我的 userId 数据作为字符串传递。我在我的 DashboardActivity 中得到了它。现在我想访问我的 Fragment 中的 userId,所以我应该使用 bundle 来做到这一点?
猜你喜欢
  • 2021-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-07
  • 1970-01-01
相关资源
最近更新 更多