如何将值填充到可从我们从一个活动发送到另一个活动的对象的可分类的变量

时间:2017-11-16 14:56:13

标签: android parcelable

堆栈追踪:

11-16 20:39:42.374 30640-30703/? E/LocalFingerprints: cannot compute fingerprint for: content://media/external/images/media/41373
  java.io.FileNotFoundException: No such file or directory
      at android.database.DatabaseUtils.readExceptionWithFileNotFoundExceptionFromParcel(DatabaseUtils.java:146)
      at android.content.ContentProviderProxy.openTypedAssetFile(ContentProviderNative.java:682)
      at android.content.ContentResolver.openTypedAssetFileDescriptor(ContentResolver.java:1063)
      at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:904)
      at android.content.ContentResolver.openInputStream(ContentResolver.java:629)
      at cak.a(PG:159)
      at bzj.a(PG:123)
      at com.google.android.apps.plus.service.FingerprintScannerIntentService.onHandleIntent(PG:79)
      at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65)
      at android.os.Handler.dispatchMessage(Handler.java:102)
      at android.os.Looper.loop(Looper.java:136)
      at android.os.HandlerThread.run(HandlerThread.java:61)

这是FirstActivity:

  void handleBlogEditClick(){
       if (BlogDetailActivity.this!= null) {
            BlogDetailVO blogDetailVO=new BlogDetailVO(getArgs().getmId(),getArgs().getmName().toString(),getArgs().getmDescription().toString());
            blogDetailVO.mCoverPic.setmImageUrl(getArgs().getmImageUrl());
            Intent intent = new Intent(BlogDetailActivity.this, EditBlogActivity.class);
            intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
            intent.putExtra("blogDetailVO",blogDetailVO);
            startActivity(intent);
       }
    }

第二项活动:

mState = new EditBlogState();
Intent intent = getIntent();
BlogDetailVO blogDetailVO =(BlogDetailVO) intent.getParcelableExtra("blogDetailVO");
mState.mCoverPhotoStory.setmName(blogDetailVO.getmName());
mView.updateBlogTitle(mState.mCoverPhotoStory.getmName());

第一个和第二个活动代码中的其他内容与此无关,所以我分享了这么多

public class BlogDetailVO extends BlogFeedVO implements Parcelable{

    PhotoStoryVO mCoverPic;
    List<PhotoStoryVO> mPhotoStories;
    LocationVO mLocationVO;

    public BlogDetailVO(String mId, String mName, String mDescription) {
        super(mId, mName, mDescription);
    }

    protected BlogDetailVO(Parcel in) {
        super(in);

        mCoverPic = in.readParcelable(PhotoStoryVO.class.getClassLoader());
        mPhotoStories = in.createTypedArrayList(PhotoStoryVO.CREATOR);
        mLocationVO = in.readParcelable(LocationVO.class.getClassLoader());
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        super.writeToParcel(dest, flags);

        dest.writeParcelable(mCoverPic, flags);
        dest.writeTypedList(mPhotoStories);
        dest.writeParcelable(mLocationVO, flags);
    }

    @Override
    public int describeContents() {
        return hashCode();
    }

    public static final Creator<BlogDetailVO> CREATOR = new Creator<BlogDetailVO>() {
        @Override
        public BlogDetailVO createFromParcel(Parcel in) {
            return new BlogDetailVO(in);
        }

        @Override
        public BlogDetailVO[] newArray(int size) {
            return new BlogDetailVO[size];
        }
    };

    public PhotoStoryVO getmCoverPic() {
        return mCoverPic;
    }

    public void setmCoverPic(PhotoStoryVO mCoverPic) {
        this.mCoverPic = mCoverPic;
    }


    public List<PhotoStoryVO> getmPhotoStories() {
        return mPhotoStories;
    }

    public void setmPhotoStories(List<PhotoStoryVO> mPhotoStories) {
        this.mPhotoStories = mPhotoStories;
    }

    public LocationVO getmLocationVO() {
        return mLocationVO;
    }

    public void setmLocationVO(LocationVO mLocationVO) {
        this.mLocationVO = mLocationVO;
    }
}

我是android新手。很抱歉,如果这个问题很愚蠢。但我真的被困住了,需要帮助。我正在将BlogDetailVO类对象发送到另一个活动。第二行显示为null。所以我不能用这种方式来填充价值吗?最终它崩溃了。

BlogDetailVO blogDetailVO=new BlogDetailVO(getArgs().getmId(),getArgs().getmName().toString(),getArgs().getmDescription().toString());
blogDetailVO.mCoverPic.setmImageUrl(getArgs().getmImageUrl()); //this gives the error!!
Intent intent = new Intent(BlogDetailActivity.this, EditBlogActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
intent.putExtra("blogDetailVO",blogDetailVO);  startActivity(intent);

那么如何将值填充到BlogDtailVO类以便将其发送到其他活动? 在接收活动中,我以这种方式接收它:

 Intent intent = getIntent();
 BlogDetailVO blogDetailVO =(BlogDetailVO) intent.getParcelableExtra("blogDetailVO");

0 个答案:

没有答案