У меня есть ListFragment, который реализует прослушиватель щелчков, чтобы передать объект с щелчками в IngredientActivity.Когда я извлекаю объект в IngredientActivity, переменные объекта равны нулю.
public class ListFragment extends Fragment implements ListRecipeAdapter.ListItemClickListener {
....
@Override
public void onListItemClick(Recipe selectedRecipe) {
Bundle bundle = new Bundle();
ArrayList<Recipe> selectedRecipeArray = new ArrayList<>();
selectedRecipeArray.add(selectedRecipe);
bundle.putParcelableArrayList("recipe",selectedRecipeArray);
Intent intent = new Intent(getActivity(), IngredientActivity.class);
intent.putExtras(bundle);
startActivity(intent);
}
}
Я извлекаю пакет и извлекаю Arraylist объекта как:
public class IngredientActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
....
Bundle bundle = getIntent().getExtras();
ArrayList<Recipe> recipes = bundle.getParcelableArrayList("recipe");
recipe = recipes.get(0);
}
}
Слушатель является интерфейсом:
public interface ListItemClickListener {
void onListItemClick(Recipe recipeId);
}
Рецепт определяется как Parcelable:
public class Recipe implements Parcelable {
...
}
Когда я печатаю это в logcat:
Рецепт во фрагменте:
com.example.android.bakingapp.Models.Recipe@5d8b71e
ArrayList во фрагменте:
[com.example.android.bakingapp.Models.Recipe@5d8b71e]
Пакет во фрагменте:
Bundle[{selected_recipe=[com.example.android.bakingapp.Models.Recipe@5d8b71e]}]
Полученный объект выглядит иначе:
Пакет в действии:
Bundle[mParcelledData.dataSize=6784]
ArrayList в действии:
[com.example.android.bakingapp.Models.Recipe@1abf1e8]
Рецепт в действии:
com.example.android.bakingapp.Models.Recipe@1abf1e8