How to reuse layout set in setContentView? Android -
i trying use android:configchanges="keyboardhidden|orientation|screensize"
in manifest cannot lose state of videoview
when configuration changes happen. means need choose layouts myself on configuration. problem having when first initialize view use in oncreate
, here:
@override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); if (getresources().getconfiguration().orientation == configuration.orientation_landscape) { setcontentview(r.layout.activity_make_photo_video_land); } else if (getresources().getconfiguration().orientation == configuration.orientation_portrait) { setcontentview(r.layout.activity_make_photo_video); } }
it chooses right layout. when need adjust layout on configuration change here:
@override public void onconfigurationchanged(configuration newconfig) { super.onconfigurationchanged(newconfig); if (getresources().getconfiguration().orientation == configuration.orientation_landscape) { setcontentview(r.layout.activity_make_photo_video_land); } else if (getresources().getconfiguration().orientation == configuration.orientation_portrait) { setcontentview(r.layout.activity_make_photo_video); } }
it not use same instance of layout, rather reloads it, makes videoview
go black. unable press buttons after that.
is there way reuse initial layouts? have tried set views 1 setcontentview(r.layout.activity_make_photo_video_land);
activity activity
object, ide won't let me, says activity incompatible void
. because if reference view, reuse it. or there simpler way of doing not seeing?
thanks.
i suggesting alternative , simple solution problem :
1. move layout activity_make_photo_video_land /res/layout-land/ folder , rename activity_make_photo_video.xml
this way activity_make_photo_video_land view (rename activity_make_photo_video) inflated when orientation changes landscape
so, not required handle these facility manually java code.
change oncreate() :
@override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_make_photo_video_land); }
your application have single layout activity_make_photo_video in /res/layout/ , /res/layout-land/ both folder
update :
unless specify otherwise, configuration change (such change in screen orientation, language, input devices, etc) cause current activity destroyed, going through normal activity lifecycle process of onpause(), onstop(), , ondestroy() appropriate. if activity had been in foreground or visible user, once ondestroy() called in instance new instance of activity created, whatever savedinstancestate previous instance had generated onsaveinstancestate(bundle).
override onsaveinstancestate(bundle) , save state here
you can check more here
i hope work
Comments
Post a Comment