【问题标题】:Passing JSON response data from an activity to a fragment in android将JSON响应数据从活动传递到android中的片段
【发布时间】:2018-01-14 09:28:05
【问题描述】:

我需要从我的 LoginActivity 传递从 json 响应(logcat 成功)返回的用户名和令牌,以便我可以将它们设置为新 http 请求的参数。

我该怎么做?

顺便说一句,如果可能的话,你能否教我如何使用 foreach 循环或其他方法显示所有汽车!

【问题讨论】:

  • 使用 SharedPreferences 至少存储用户名。永远不要以明文形式存储密码

标签: android json request android-volley


【解决方案1】:

您可以将参数作为捆绑数据传递给片段。

CarFragment carfragment= new CarFragment();
 Bundle bundle=new Bundle();
    bundle.putString("username",username);
    bundle.putString("token",token);
   carfragment.setArguments(bundle);

getSupportFragmentManager().beginTransaction().replace(R.id.your_container,carFragment).commit();

您可以从 carfragment onCreate() 方法中检索此数据

  Bundle bundle= getArguments();
    String username= bundle.getString("username");
    String token = bundle.getString("token");

对于每个都可以编码为

for(Car car : carList){
// do your stuff using "car" variable
}

您可以使用 SharedPreference 来存储用户名和令牌

在您的登录回调结果中,保存用户名和令牌

SharedPreferences preferences=getSharedPreferences("myPref",MODE_PRIVATE);
    SharedPreferences.Editor editor= preferences.edit();
    editor.putString("username",username);
    editor.putString("token",token);
    editor.apply();

在您的 carFragment 中使用此代码检索数据

 SharedPreferences preferences=getActivity().getSharedPreferences("myPref", Context.MODE_PRIVATE);
    String username=preferences.getString("username","");
    String token = preferences.getString("token","");

注意:优先存储敏感数据是有风险的。因此请尝试加密您的令牌。并在需要时解密..

【讨论】:

  • Vinayak,我不确定 replace() 方法中有什么容器,我必须放什么?
  • 把你的framelayout id放在那个地方。它在你的 xml 文件中
  • 我明白了。我要试试!
  • 维纳亚克。我得到了这个错误。 java.lang.NullPointerException:尝试在 com.vnetgps.topgps.BottomNavigationFragments.CarListFragment.onCreateView( CarListFragment.java:47)
  • 你是从登录活动还是主要活动中调用你的片段?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-01
相关资源
最近更新 更多