如何将数据从片段传递到片段到活动

时间:2018-03-25 18:01:34

标签: android string android-fragments

所以基本上我正在尝试将EditText字符串传递给同一个Activity中的另一个片段。然后将该数据传递给另一个Activity,具体取决于按下的按钮。我的问题是应用程序工作正常,但我只是没有看到正在创建的字符串。我试图使用textview来检查它是否有效,当我通过第一个数据,但没有显示。

我只想将字符串传递给另一个片段,然后根据按钮按下它们在任何一个Activity上传递它。

这是我的代码

将我的数据传递到下一个片段并转到片段。

mNextBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intent = new Intent(getActivity(), ItemStorageFragment.class);
            intent.putExtra("itemName", addName.getText().toString());
            ((AddInventoryActivity)getActivity()).ToExpiration(null);
        }
    });

从我的First Fragment中抓取数据

Intent intent = getActivity().getIntent();
    value = intent.getStringExtra("itemName");

然后将其发送到活动

mToFreezer.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent in = new Intent(getActivity(), FreezerActivity.class);
            in.putExtra("itemNameToFreezer", value);
            startActivity(in);
        }
    });

然后将其添加到我的RecyclerView

Intent i = getIntent();
    String string = i.getStringExtra("itemNameToFreezer");
    mDataset.add(string);
    mAdapter.notifyDataSetChanged();

1 个答案:

答案 0 :(得分:0)

Intent个附加功能可以在活动之间共享数据,但您不能像在代码中那样直接将它们用于Fragments。我想,你是初学者,所以我建议你在这里深入了解Intents:Android - Intents and Filters

有几种方法可以在ActivitiesFragments之间传递数据,其中最常见的是passing arguments。但是,在您的情况下,我建议您使用SharedPreferences。您可以在StringFragment内的任意位置存储Activity数据,然后通过以下简单步骤轻松将其取出:

将数据输入SharedPreferences:

SharedPreferences.Editor editor = getSharedPreferences("YourPrefsFile", MODE_PRIVATE).edit();
 editor.putString("name", "Elena");
 editor.putInt("idName", 12);
 editor.apply();

从SharedPreferences获取数据:

SharedPreferences prefs = getSharedPreferences("YourPrefsFile", MODE_PRIVATE); 
String restoredText = prefs.getString("text", null);
if (restoredText != null) {
  String name = prefs.getString("name", "");
  int idName = prefs.getInt("idName", 0);
}