Android-Fragment Shared element transaction ERROR -
i want use fragment shared element transaction in adapter. show detail when pressed read more button cannot this. dunno fault. idea ?
import android.app.activity; import android.content.context; import android.os.build; import android.support.design.widget.snackbar; import android.support.v4.app.fragmenttransaction; import android.support.v7.widget.recyclerview; import android.transition.transition; import android.transition.transitioninflater; import android.view.layoutinflater; import android.view.view; import android.view.viewgroup; import android.view.animation.animation; import android.view.animation.animationutils; import android.widget.textview; import java.util.list; /** * created r00t on 16.12.2015. */ public class newslistadapter extends recyclerview.adapter<newslistadapter.viewholder>{ private list<newsmodel> newsmodels; private context context; private int lastposition = -1; public newslistadapter(context context, list<newsmodel> feeditemlist) { this.newsmodels = feeditemlist; this.context = context; } public class viewholder extends recyclerview.viewholder { protected textview title; protected textview desc; protected textview readmore; public viewholder(view view) { super(view); this.title = (textview) view.findviewbyid(r.id.asd); this.desc = (textview) view.findviewbyid(r.id.desc); this.readmore = (textview) view.findviewbyid(r.id.readmore); } } @override public viewholder oncreateviewholder(viewgroup parent, int viewtype) { view v = layoutinflater.from(parent.getcontext()).inflate(r.layout.news_recyclerlist_item, parent, false); viewholder view_holder = new viewholder(v); return view_holder; } @override public void onbindviewholder(final viewholder holder, final int position) { setanimation(holder.itemview, position); holder.title.settext(newsmodels.get(position).gettitle()); holder.desc.settext(newsmodels.get(position).getdesc()); holder.readmore.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { newsfragment newsfragment = new newsfragment(); newsdetailfragment newsdetailfragment = new newsdetailfragment(); if (build.version.sdk_int >= build.version_codes.lollipop) { transition changetransform = transitioninflater.from(v.getcontext()). inflatetransition(r.transition.change_image_transform); transition explodetransform = transitioninflater.from(v.getcontext()). inflatetransition(android.r.transition.explode); newsfragment.setsharedelementreturntransition(changetransform); newsfragment.setexittransition(explodetransform); newsdetailfragment.setsharedelemententertransition(changetransform); newsdetailfragment.setentertransition(explodetransform); textview title = (textview) v.findviewbyid(r.id.asd); fragmenttransaction fragmenttransaction = ((activity)context).getfragmentmanager() .begintransaction() .replace(r.id.flcontent, newsdetailfragment) .addtobackstack("s") .addsharedelement(title, "dsa"); fragmenttransaction.commit(); } } }); } @override public int getitemcount() { return newsmodels.size(); } @override public void onattachedtorecyclerview(recyclerview recyclerview) { super.onattachedtorecyclerview(recyclerview); } private void setanimation(view viewtoanimate, int position) { if (position > lastposition) { animation animation = animationutils.loadanimation(context, android.r.anim.slide_in_left); viewtoanimate.startanimation(animation); lastposition = position; } } } and i'm getting error. dunno i'm gonna do.
02-08 16:30:59.565 2755-2755/? e/androidruntime: fatal exception: main process: com.lux.lux, pid: 2755 java.lang.nullpointerexception: attempt invoke virtual method 'java.lang.string android.view.view.gettransitionname()' on null object reference @ android.app.backstackrecord.addsharedelement(backstackrecord.java:565) @ com.lux.lux.adapters.newslistadapter$1.onclick(newslistadapter.java:79) @ android.view.view.performclick(view.java:5198) @ android.view.view$performclick.run(view.java:21147) @ android.os.handler.handlecallback(handler.java:739) @ android.os.handler.dispatchmessage(handler.java:95) @ android.os.looper.loop(looper.java:148) @ android.app.activitythread.main(activitythread.java:5417) @ java.lang.reflect.method.invoke(native method) @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:726) @ com.android.internal.os.zygoteinit.main(zygoteinit.java:616)
Comments
Post a Comment