天天看點

android 傳回功能,Android實作傳回鍵功能

記錄使用者點選的操作曆史,使用棧資料結構,頻繁的操作棧頂(添加,擷取,删除),使用linkedlist

捕獲使用者的傳回鍵操作,響應傳回鍵,傳回上一個界面

mainactivity.java

@override

public boolean onkeydown(int keycode, keyevent event) {

if(keycode==keyevent.keycode_back){

boolean result=middlemanager.getinstance().goback();

if(!result){

toast.maketext(mainactivity.this, "是否退出應用", 1).show();

}

return false;

}

return super.onkeydown(keycode, event);

}

middlemanager.java

//操作曆史棧

private linkedlist history=new linkedlist();

public boolean goback() {

//如果為空會抛異常

if(history.size()>0){

if(history.size()==1){

return false;

}

history.removefirst();

if(history.size()>0){

string key=history.getfirst();

baseview targetview=viewcache.get(key);

maincontainer.removeallviews();

view child=targetview.getview();

maincontainer.addview(child);

child.startanimation(animationutils.loadanimation(maincontainer.getcontext(), r.anim.left_to_right));

currentview=targetview;

return true;

}

}

return false;

}

public void loadview(class extends baseview> baseviewclass) {

baseview baseview=null;

//判斷是否存在

string key=baseviewclass.getsimplename();

if(viewcache.containskey(key)){

baseview=viewcache.get(key);

}else{

try {

constructor extends baseview> constructor;

constructor = baseviewclass.getconstructor(context.class);

baseview=constructor.newinstance(maincontainer.getcontext());

} catch (exception e) {

e.printstacktrace();

}

viewcache.put(key, baseview);

}

maincontainer.removeallviews();

view child=baseview.getview();

maincontainer.addview(child);

child.startanimation(animationutils.loadanimation(maincontainer.getcontext(), r.anim.left_to_right));

currentview=baseview;

//放入棧

history.addfirst(key);

}

以上所述是小編給大家介紹的android實作傳回鍵功能,希望對大家有所幫助