これは、解析された XML からメニューを動的に作成する関数です。物理的な戻るボタンを押すと、前のメニューに移動する必要があります。これに関する多くの記事を読みましたが、メニューに戻るための記事はまだ見つかりません。
public int create_menu(int level_n){
int lv=level_n;
if(flag){
base=0;
}
else{
base=lv-1;
}
ctr=true;
if(e[lv].getType().equals("menu")){
flag=false;
subm[lv]=subm[base].addSubMenu(0, lv, 0, e[lv].getName());
lv++;
for(int i=0;i<noChild[lv-1];i++){
if(e[lv+i].getType().equals("menu")){
create_menu(lv+i);
Log.i(TAG,"number= "+i);
flag=false;
}
else if (e[lv+i].getType().equals("action")){
if(ctr){
Log.i(TAG,"going to else"+e[lv].getName()+" " +i);
subm[lv]=subm[lv-1+i].addSubMenu(0, lv+i, 0, e[lv+i].getName());
//Log.i(TAG,"element = "+e[lv+1].getType() );
lv++;
create_menu(lv);
ctr=false;
}
flag=false;
}
}
flag=true;
}
else if(e[lv].getType().equals("action")){
if(flag==true && ctr==true)
{
subm[lv]=subm[base].addSubMenu(0, lv,0, e[lv].getName());
lv++;
}
else if(flag==false && ctr==false){
subm[lv]=subm[base-1].addSubMenu(0, lv, 0, e[lv].getName());
lv++;
}
}
return lv;
}