从调试中我可以看到,在调用const data = {
"address": "6210 place",
"name": "frank",
"paymentId": "ch_1AjJRVDfJ ryYeuMpJC80cp5k",
"email": "g@mail.com",
"cart": [
{
"items": {
"59752 28a215c0f074b64f58e": {
"item": {
"_id": "5975228a215c0f074b64f58e",
"title": "Bracelet 3",
"imagePath": "https:// www.costco.com/wcsstore/CostcoUSBCCatalogAssetStore/category-tiles/pearl-bracelets.jpg",
"description": "This is brace let 3",
"price": 12,
"__v": 0
},
"qty": 1,
"price": 12
},
"59752242215c0f074b64f58c": {
"item": {
"_id": "597522 42215c0f074b64f58c",
"title": "Bracelet 1",
"imagePath": "https://img0.etsystatic.com/160/0/12655872/il_340x270.11871 91078_i2ha.jpg",
"description": "This is bracelet 1",
"price": 10,
"__v": 0
},
"qty": 2,
"price": 20
},
"5975226a2 15c0f074b64f58d": {
"item": {
"_id": "5975226a215c0f074b64f58d",
"title": "Bracelet 2",
"imagePath": "http://media .tiffany.com/is/image/Tiffany/EcomBrowseM/paloma-picasso-knot-bead-bracelet-34946183_963148_ED.jpg?op_usm=1.00,1.00,6.0 0&defaultImage=NoImageAvailable&&",
"description": "This is bracelet 2",
"price": 5,
"__v": 0
},
"qty": 1,
"price": 5
}
},
"totalQty": 4,
"totalPrice": 37
}
],
"__v": 0
};
console.log('looping through Object.keys')
Object.keys(data.cart[0].items).forEach(key => {
const cartItem = data.cart[0].items[key];
console.log('cartItem.item.imagePath', cartItem.item.imagePath)
})
console.log('looping through Object.values')
Object.values(data.cart[0].items).forEach(cartItem=> {
console.log('cartItem.item.imagePath', cartItem.item.imagePath)
})
时,额外内容实际上在意图中。但是,在新活动中调用startActivity(Intent)
后,额外内容就会消失。在我添加getIntent()
来处理长计算之前,意图的附加功能很好。
以下是启动新活动AsyncTask
RecipeListActivity
}
public class Fragment extends android.support.v4.app.Fragment {
private Entity mEntity;
private class RecipeOperation extends AsyncTask<Void, Void, ArrayList<Recipe>> {
Context mContext;
public RecipeOperation(Context context){
mContext = context;
}
@Override
protected void onPreExecute(){
// set gui visibilities
}
@Override
protected ArrayList<Recipe> doInBackground(Void... param) {
// long computation
}
@Override
protected void onPostExecute(ArrayList<Recipe> result) {
//start activity
Intent i = RecipeListActivity.newIntent(mContext, mEntity.getName(), result);
mContext.startActivity(i);
}
}
任务执行如此
RecipeOperation
以下是我正在开展的活动
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
new RecipeOperation(getActivity()).execute();
}
});
}
这是public class RecipeListActivity extends SingleFragmentActivity {
private static final String EXTRA_NAME = "name";
private static final String RECIPES_TAG = "Recipes";
@Override
protected Fragment createFragment(){
String Name = getIntent().getExtras().getString(EXTRA_NAME);
ArrayList<Recipe> recipes = getIntent().getExtras().getParcelableArrayList(RECIPES_TAG);
return RecipeListFragment.newInstance(Name,recipes);
}
public static Intent newIntent(Context packageContent, String Name, ArrayList<Recipe> recipes){
Intent intent = new Intent(packageContent,RecipeListActivity.class);
intent.putExtra(EXTRA_NAME, Name);
intent.putParcelableArrayListExtra(RECIPES_TAG,recipes);
return intent;
}
RecipeListActivity
}
在开始新活动时,意图的额外内容发生了什么?如何才能使附加内容持续存在?
答案 0 :(得分:0)
事实证明,意图的附加内容为空,因为我的Recipe
类中有一个实现Parcelable
的错误。基本上,我的parcel.write
命令与我的parcel.read
命令不匹配。
因此,如果其他人有此问题,请检查您的parcelables。将错误实现的parcelable放入intent中会在下一个活动开始时调用所有额外内容并调用getIntent
。