Java 将数据从活动传递到片段

Java 将数据从活动传递到片段,java,android,retrofit2,Java,Android,Retrofit2,我对此有点不知所措,所以我已经将数据从我的LoginActivity传递到我的DashboardActivity。它现在起作用了(感谢上帝)。但是现在,我想把数据传递给一个片段 我的仪表板活动中有以下内容: Intent get = getIntent(); String userId = get.getStringExtra(LoginActivity.EXTRA_ID); Bundle bundle = new Bundle(); bundle.putString("userId", us

我对此有点不知所措,所以我已经将数据从我的LoginActivity传递到我的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);
我的碎片上有这个:

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

是这样吗?

从活动到片段,您应该使用如下捆绑包

Bundle bundle = new Bundle();
bundle.putString(LoginActivity.EXTRA_ID, "Extra value");
Fragment fragment = new Fragment();
fragment.setArguments(bundle);
然后在片段中,例如在
onCreate()方法中获取数据

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

获取片段和活动中的数据的方式不同。 要向片段发送额外的数据,可以这样做

在你的活动课上

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

FragmentClass frag = new FragmentClass();
frag.setArguments(bundle);
然后在Fragement 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");

这回答了你的问题吗?这可能看起来很傻,但在这里:bundle.putString(userId)我不能像这样传递它,或者我可以吗?你需要一个密钥,就像你在问题中所做的那样。我太困惑了,我通过Intent将我的userId数据作为字符串传递。我在我的仪表板活动中得到了它。现在我想访问片段中的userId,所以我应该使用bundle来完成它?我知道我要求太多了。我刚刚更新了我的问题,应该是我的方式吗?非常感谢你的回答。我的仪表盘碎片崩溃正常吗?我相信我没有很好地定义我的片段。就像,正确的方法。我不知道,因为我相信我遇到的问题是因为我将数据从我的活动传递到我的片段的方式。因为我在片段中得到的值是null,而我可以在活动中打印id。