如下代碼是有問題的,直到某次遞歸檢查FileName沒有問題那么就不生成新名字再檢查了,直接返回,這是我們想要的,但是之前失敗的調(diào)用也會逐一出棧且反回一個值,應(yīng)為返回了我們每次調(diào)用的局部變量,那么就有問題了,返回多次,想要的值被覆蓋。
改正:每次返回一個全局變量,代碼中打開注釋就好了。
final String txtNameFirstPart = "New Text Document";
final String txtNameSecondPart = ".txt";
// private String theTrueNewName = "";
private String getTheTXTNewName( String newFileName, int checkNameTimes ){
// theTrueNewName = newFileName;
if(arrayadapter!=null && arrayadapter.getM_Items()!=null && arrayadapter.getM_Items().size()>0){
List<ObjItem> items = arrayadapter.getM_Items();
for(ObjItem item : items){
if(item.ObjName.equals(newFileName)){
checkNameTimes++;
getTheTXTNewName(txtNameFirstPart+" ("+checkNameTimes+")"+txtNameSecondPart, checkNameTimes);
break;
}
}
}
//return theTrueNewName;
return newFileName;
}