how can explain problem?
i have application using tabs (by intents, not views). have implemented navigation inside each view without trouble need launch video player listview inside 1 of activity in full screen , landscape mode (so without tabs). when want live player, (either pressing or calling finish();), application closed (no exceptions in logcat) , return main screen. need when quit fullscreen activity(launched player) come application, whith tabs.
here code :
//main activity : package com.ccn; import android.app.tabactivity; import android.content.intent; import android.content.res.resources; import android.os.bundle; import android.widget.tabhost; public class ccnmain extends tabactivity { public static tabhost tabhost; static ccnmain myactivity = null; /** called when activity first created. */ @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); myactivity = this; resources res = getresources(); tabhost = gettabhost(); tabhost.tabspec spec; // reusable tabspec each tab intent intent; intent = new intent().setclass(this, newsgroup.class); spec = tabhost.newtabspec("nnews") .setindicator("a la une",res.getdrawable(r.drawable.home)) .setcontent(intent); tabhost.addtab(spec); /*intent = new intent().setclass(this, articlesgroup.class); spec = tabhost.newtabspec("aarticles") .setindicator("articles",res.getdrawable(r.drawable.articles)) .setcontent(intent); tabhost.addtab(spec);*/ intent = new intent().setclass(getapplicationcontext(), contactgroup.class); spec = tabhost.newtabspec("vvideos") .setindicator("vidéos",res.getdrawable(r.drawable.video)) .setcontent(intent); tabhost.addtab(spec); intent = new intent().setclass(getapplicationcontext(), contactgroup.class); spec = tabhost.newtabspec("ccontact") .setindicator("contact",res.getdrawable(r.drawable.contact)) .setcontent(intent); tabhost.addtab(spec); tabhost.setcurrenttab(0); } } //contactgroup : package com.ccn; import java.util.arraylist; import android.app.activitygroup; import android.content.intent; import android.os.bundle; import android.view.view; public class contactgroup extends activitygroup { // keep in static variable make accessible nested activities, lets them manipulate view public static contactgroup groupcontact; // need keep track of history if want back-button work properly, don't use if activities requires lot of memory. private arraylist<view> history; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); this.history = new arraylist<view>(); groupcontact = this; // start root activity within group , view view view = getlocalactivitymanager().startactivity("idhoraireactivity", new intent(this,contactactivity.class) .addflags(intent.flag_activity_clear_top)) .getdecorview(); // replace view of activitygroup replaceview(view); } public void replaceview(view v) { // adds old 1 history history.add(v); // changes groups view new view. setcontentview(v); } public void back() { if(history.size() > 1) { history.remove(history.size()-1); setcontentview(history.get(history.size()-1)); }else { finish(); } } //@override public void onbackpressed() { contactgroup.groupcontact.back(); return; } } //contactactivity: package com.ccn; import java.io.ioexception; import android.app.activity; import android.content.intent; import android.media.mediaplayer; import android.net.uri; import android.os.bundle; import android.os.handler; import android.util.log; import android.view.view; import android.view.view.onclicklistener; import android.widget.button; import android.widget.mediacontroller; import android.widget.toast; import android.widget.videoview; public class contactactivity extends activity { static contactactivity bidule = null; protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.videos); bidule = this; button btn = (button) findviewbyid(r.id.button1); btn.setonclicklistener(new onclicklistener() { public void onclick(view v) { // todo auto-generated method stub intent = new intent(); i.setclass(getapplicationcontext(), videoplayeractivity.class); //i.addflags(intent.flag_activity_new_task); bidule.startactivity(i); contactactivity.this.startactivityforresult(i, 0); } }); } } //videoplayeractivity: package com.ccn; import android.app.activity; import android.net.uri; import android.os.bundle; import android.view.view; import android.view.view.onclicklistener; import android.widget.button; import android.widget.mediacontroller; import android.widget.videoview; public class videoplayeractivity extends activity { protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.videos); //the videoview hold video string url = // video url; button btn = (button) findviewbyid(r.id.button1); btn.setonclicklistener(new onclicklistener() { public void onclick(view v) { // todo auto-generated method stub finish(); } }); } }
and here manifest:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.ccn" android:versioncode="1" android:versionname="1.0"> <uses-permission android:name="android.permission.internet"></uses-permission> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".ccnmain" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher" /> </intent-filter> </activity> <activity android:name="articlesgroup"></activity> <activity android:name="contactgroup"></activity> <activity android:name="newsgroup"></activity> <activity android:name="newsactivity"></activity> <activity android:name="articlesavtivity"></activity> <activity android:name="contactactivity"></activity> <activity android:name="videoplayeractivity" android:theme="@android:style/theme.notitlebar.fullscreen" android:screenorientation="landscape"></activity> </application> </manifest>
thank help. guess : has call startactivity , intent flags. think?
edited
/main activity : package com.ccn; import android.app.tabactivity; import android.content.intent; import android.content.res.resources; import android.os.bundle; import android.widget.tabhost; public class ccnmain extends tabactivity { public static tabhost tabhost; static ccnmain myactivity = null; /** called when activity first created. */ @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); myactivity = this; resources res = getresources(); tabhost = gettabhost(); tabhost.tabspec spec; // reusable tabspec each tab intent intent; intent = new intent().setclass(this, newsgroup.class); spec = tabhost.newtabspec("nnews") .setindicator("a la une",res.getdrawable(r.drawable.home)) .setcontent(intent); tabhost.addtab(spec); /*intent = new intent().setclass(this, articlesgroup.class); spec = tabhost.newtabspec("aarticles") .setindicator("articles",res.getdrawable(r.drawable.articles)) .setcontent(intent); tabhost.addtab(spec);*/ intent = new intent().setclass(getapplicationcontext(), contactgroup.class); spec = tabhost.newtabspec("vvideos") .setindicator("vidéos",res.getdrawable(r.drawable.video)) .setcontent(intent); tabhost.addtab(spec); intent = new intent().setclass(getapplicationcontext(), contactgroup.class); spec = tabhost.newtabspec("ccontact") .setindicator("contact",res.getdrawable(r.drawable.contact)) .setcontent(intent); tabhost.addtab(spec); tabhost.setcurrenttab(0); } } //contactgroup : package com.ccn; import java.util.arraylist; import android.app.activitygroup; import android.content.intent; import android.os.bundle; import android.view.view; public class contactgroup extends activitygroup { // keep in static variable make accessible nested activities, lets them manipulate view public static contactgroup groupcontact; // need keep track of history if want back-button work properly, don't use if activities requires lot of memory. private arraylist<view> history; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); this.history = new arraylist<view>(); groupcontact = this; // start root activity within group , view view view = getlocalactivitymanager().startactivity("idhoraireactivity", new intent(this,contactactivity.class) .addflags(intent.flag_activity_clear_top)) .getdecorview(); // replace view of activitygroup replaceview(view); } public void replaceview(view v) { // adds old 1 history history.add(v); // changes groups view new view. setcontentview(v); } public void back() { if(history.size() > 1) { history.remove(history.size()-1); setcontentview(history.get(history.size()-1)); }else { finish(); } } //@override public void onbackpressed() { contactgroup.groupcontact.back(); return; } } //contactactivity: package com.ccn; import java.io.ioexception; import android.app.activity; import android.content.intent; import android.media.mediaplayer; import android.net.uri; import android.os.bundle; import android.os.handler; import android.util.log; import android.view.view; import android.view.view.onclicklistener; import android.widget.button; import android.widget.mediacontroller; import android.widget.toast; import android.widget.videoview; public class contactactivity extends activity { //static contactactivity bidule = null; contactgroup contactgroup = null; protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.videos); //bidule = this; contactgroup = new contactgroup(); button btn = (button) findviewbyid(r.id.button1); btn.setonclicklistener(new onclicklistener() { public void onclick(view v) { // todo auto-generated method stub view view = getlocalactivitymanager().startactivity("videoplayeractivity", new intent(this,videoplayeractivity.class) .addflags(intent.flag_activity_clear_top)) .getdecorview(); contactgroup.replaceview(view); } }); } } //videoplayeractivity: package com.ccn; import android.app.activity; import android.net.uri; import android.os.bundle; import android.view.view; import android.view.view.onclicklistener; import android.widget.button; import android.widget.mediacontroller; import android.widget.videoview; public class videoplayeractivity extends activity { contactgroup contactgroup = null; protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.videos); contactgroup contactgroup = new contactgroup(); //the videoview hold video string url = // video url; button btn = (button) findviewbyid(r.id.button1); btn.setonclicklistener(new onclicklistener() { public void onclick(view v) { // todo auto-generated method stub contactgroup.back(); } }); }
summary :
you have call repalaceview , methods of activity group. when want start new activity use replaceview()
, when want finish activity use back()
Comments
Post a Comment