android - E/AndroidRuntime(25321694): java.lang.RuntimeException: Unable to pause activity -Unable to add window -
i porting android application bb10 android run time
in places while navigating new activity present activity in activity group,i getting errror,
07-17 06:50:58.924: e/androidruntime(25321694): java.lang.runtimeexception: unable pause activity {com.myactivity}: android.view.windowmanager$badtokenexception: unable add window -- token null not valid; activity running?
it happening in places,not in places,places in error did not call onpause() method of baseactivitygroup,places in works on pause method called
mybase activity code similar below http://ericharlow.blogspot.in/2010/09/experience-multiple-android-activities.html
package com.rak.ui; 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.view; import android.view.window; import com.xxx.interfaces.confirmactionlistener; import com.xxx.interfaces.deleteactionlistener; import com.xxx.interfaces.tpinconflistener; public class bactivitygroup extends activitygroup { private confirmactionlistener _conflistener; private deleteactionlistener _dellistener; private tpinconflistener _tpinlistener; private arraylist<string> midlist; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); system.out.println("on create of baseactivity group>>>>>>>>>>"); if (midlist == null) midlist = new arraylist<string>(); } public void startchildactivity(string id, intent intent) { system.out.println("within startchildactivity>>>>>>> bactivitygroup"); window window = getlocalactivitymanager().startactivity(id,intent.addflags(intent.flag_activity_clear_top)); if (window!=null) { midlist.add(id); setcontentview(window.getdecorview()); } } @override protected void onpause() { // todo auto-generated method stub system.out.println("on pause of baseactivity group>>>>>>>>>>"); super.onpause(); } @override protected void ondestroy() { // todo auto-generated method stub system.out.println("ondestroy of baseactivity group>>>>>>>>>>"); super.ondestroy(); } @override public void finishfromchild(activity child) { system.out.println("within finishfromchild>>>>>>> baseactivitygroup"); 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()); } public void replacecontentview(string id, intent newintent) { view view = getlocalactivitymanager().startactivity(id, newintent.addflags(intent.flag_activity_clear_top)) .getdecorview(); this.setcontentview(view); } public void setconfirmactionlistener(confirmactionlistener listener) { _conflistener=listener; } public void onconfirm() { if (_conflistener!=null) { _conflistener.onconfirm(); } } public void setdeleteactionlistener(deleteactionlistener listener) { _dellistener=listener; } public void ondelete(string tag) { if (_dellistener!=null) { _dellistener.ondelete(tag); } } public void settpinconflistener(tpinconflistener listener) { _tpinlistener=listener; } public void ontpinconfirm(string tpin) { if (_tpinlistener!=null) { _tpinlistener.ontpinentered(tpin); } } @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); } @override public boolean onkeyup(int keycode, keyevent event) { system.out.println("on onkeyup of baseactivity group>>>>>>>>>>"); if (keycode == keyevent.keycode_back) { onbackpressed(); return true; } return super.onkeyup(keycode, event); } public void onbackpressed () { system.out.println("on onbackpressed of baseactivity group>>>>>>>>>>"); int length = midlist.size(); if ( length > 1) { activity current = getlocalactivitymanager().getactivity(midlist.get(length-1)); current.finish(); } else { finish(); } }
}
this issue happens in blackberry q5 device,no issues in bb z10 device ,
Comments
Post a Comment