Bundle.getString () возвращает ноль? - PullRequest
0 голосов
/ 06 января 2019

Я пытаюсь передать JSON через строку в связке. Строка загружается в пакет просто отлично. но похоже, что он получает неправильный комплект.

при создании одного класса:

    if(intent!=null){

        jsonString = intent.getStringExtra(this.getBaseContext().getResources().getString(R.string.recipe_detail_json));

        //prints the string just fine here
        System.out.println(jsonString);

        Bundle bundle = new Bundle();
        bundle.putString("RECIPE_DETAIL_JSON",jsonString);
        srdFragment= new SelectRecipeDetailFragment();
        srdFragment.setArguments(bundle);
        getSupportFragmentManager().beginTransaction()
                .replace(R.id.recipe_list_step_container, srdFragment).commit();

    }

    setContentView(R.layout.select_a_recipe_step);

внутри моего фрагмента:

 private String jsonString;


@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Bundle bundle = getArguments();
    jsonString = bundle.getString("RECIPE_DETAIL_JSON");

    //this string prints null
    System.out.println(jsonString);

}

Ответы [ 2 ]

0 голосов
/ 06 января 2019

Используйте это внутри фрагмента

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
  Bundle savedInstanceState) {
jsonString = getArguments().getString("RECIPE_DETAIL_JSON");
return inflater.inflate(R.layout.fragment, container, false);
}
0 голосов
/ 06 января 2019

вы должны создать экземпляр внутри фрагмента, как это

public class SelectRecipeDetailFragment extends Fragment{

   public static SelectRecipeDetailFragment newInstance(String jsonString) {
         SelectRecipeDetailFragment frag = new SelectRecipeDetailFragment();
          Bundle args = new Bundle();
          args.putString("RECIPE_DETAIL_JSON", jsonString);
          frag.setArguments(args);
          return frag;
   }


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Bundle bundle = getArguments();
        jsonString = bundle.getString("RECIPE_DETAIL_JSON");

        //this string prints null
        System.out.println(jsonString);

    }
}

И используйте это в своей деятельности

 getSupportFragmentManager().beginTransaction()
            .replace(R.id.recipe_list_step_container, SelectRecipeDetailFragment.newInstance(jsonString).commit();
...