android - Going back to previous TabActivity -


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