android - Activities and It's Subactivities issue in Tabhost -
i having tabhost in application, in first activity 1 listview there..now when scroll , click on listview subactivity called.. now, when come secondactivity first activity listview scroll first.. want list stayed @ position clicked go secondactivity.. using tabgroupactivity. here tabgroupactivity class.
public class tabgroupactivity extends activitygroup { private arraylist<string> midlist; @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); if (midlist == null) midlist = new arraylist<string>(); } /** * called when child activity of 1 calls finish method. * implementation calls {@link localactivitymanager#destroyactivity} on * child activity , starts previous activity. if last child * activity called finish(),this activity (the parent), calls finish * finish entire group. */ @override public void finishfromchild(activity child) { localactivitymanager manager = getlocalactivitymanager(); int index = midlist.size() - 1; log.v("onm", "my size"+midlist.size()); log.v("onm", "my index====>>"+index); if (index < 1) { log.v("click", "back click event finish child if condition"); finish(); return; } try { log.v("click", "back click event finish child====>>>"+midlist.get(index)); manager.destroyactivity(midlist.get(index), true); midlist.remove(index); index--; string lastid = midlist.get(index); intent lastintent = manager.getactivity(lastid).getintent(); window newwindow = manager.startactivity(lastid, lastintent); setcontentview(newwindow.getdecorview()); } catch (exception e) { log.v("log", "trick"); finish(); } } /** * starts activity child activity this. * * @param id * unique identifier of activity started. * @param intent * intent describing activity started. * @throws android.content.activitynotfoundexception. */ public void startchildactivity(string id, intent intent) { window window = getlocalactivitymanager().startactivity(id,intent.addflags(intent.flag_activity_no_history)); if (window != null) { midlist.add(id); setcontentview(window.getdecorview()); } } /** * primary purpose prevent systems before * android.os.build.version_codes.eclair calling default * keyevent.keycode_back during onkeydown. */ @override public boolean onkeydown(int keycode, keyevent event) { if (keycode == keyevent.keycode_back) { // preventing default implementation previous // android.os.build.version_codes.eclair return true; } return super.onkeydown(keycode, event); } /** * overrides default implementation keyevent.keycode_back * systems call onbackpressed(). */ @override public boolean onkeyup(int keycode, keyevent event) { if (keycode == keyevent.keycode_back) { onbackpressed(); return true; } return super.onkeyup(keycode, event); } /** * if child activity handles keyevent.keycode_back. override , * add method. */ public void onbackpressed() { int length = midlist.size(); if (length > 1) { log.v("click", "back click event"); activity current = getlocalactivitymanager().getactivity(midlist.get(length - 1)); current.finish(); } } @override protected void onactivityresult(int requestcode, int resultcode, intent data) { // todo auto-generated method stub super.onactivityresult(requestcode, resultcode, data); } }
package com.android.workingwithtabs; import java.util.arraylist; import android.app.activity; import android.app.activitygroup; import android.app.localactivitymanager; import android.content.intent; import android.os.bundle; import android.view.keyevent; import android.view.window; @suppresswarnings("deprecation") public class workouttabgroupactivity extends activitygroup { private arraylist<string> midlist; @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); if (midlist == null) midlist = new arraylist<string>(); } @override public void finishfromchild(activity child) { localactivitymanager manager = getlocalactivitymanager(); int index = midlist.size() - 1; if (index < 1) { finish(); return; } manager.destroyactivity(midlist.get(index), true); midlist.remove(index); index--; string lastid = midlist.get(index); intent lastintent = manager.getactivity(lastid).getintent(); window newwindow = manager.startactivity(lastid, lastintent); setcontentview(newwindow.getdecorview()); } /** * starts activity child activity this. * * @param id * unique identifier of activity started. * @param intent * intent describing activity started. * @throws android.content.activitynotfoundexception. */ public void startchildactivity(string id, intent intent) { window window = getlocalactivitymanager().startactivity(id, intent.addflags(intent.flag_activity_clear_top)); if (window != null) { midlist.add(id); setcontentview(window.getdecorview()); } } /** * primary purpose prevent systems before * android.os.build.version_codes.eclair calling default * keyevent.keycode_back during onkeydown. */ @override public boolean onkeydown(int keycode, keyevent event) { if (keycode == keyevent.keycode_back) { // preventing default implementation previous // android.os.build.version_codes.eclair finish(); return true; } return super.onkeydown(keycode, event); } /** * overrides default implementation keyevent.keycode_back * systems call onbackpressed(). */ @override public boolean onkeyup(int keycode, keyevent event) { if (keycode == keyevent.keycode_back) { onbackpressed(); return true; } return super.onkeyup(keycode, event); } /** * if child activity handles keyevent.keycode_back. override , * add method. */ @override public void onbackpressed() { int length = midlist.size(); if (length > 1) { activity current = getlocalactivitymanager().getactivity( midlist.get(length - 1)); current.finish(); } } }
Comments
Post a Comment