Reputation: 313
I'm trying to pass json through a string in a bundle. The string gets loaded into the bundle just fine. but it looks like it is getting the wrong bundle.
in onCreate of one class:
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);
inside my fragment:
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);
}
Upvotes: 0
Views: 2129
Reputation: 3987
Use this inside Fragment
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
jsonString = getArguments().getString("RECIPE_DETAIL_JSON");
return inflater.inflate(R.layout.fragment, container, false);
}
Upvotes: 0
Reputation: 13555
you must create instance inside of fragment like this
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);
}
}
And use like this inside your activity
getSupportFragmentManager().beginTransaction()
.replace(R.id.recipe_list_step_container, SelectRecipeDetailFragment.newInstance(jsonString).commit();
Upvotes: 1