2014-05-23 38 views
1

我在Java有點新,我有一個簡單的問題。在下面的代碼:嵌套對象訪問父母屬性

conversation.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {   
      if (adapter.getItem(position).image && adapter.getItem(position).left) { 
       String imgName = ((Message)arg1.findViewById(R.id.imageUploaded).getTag()).message; 
       try { 
        AlertDialog.Builder confirmQuit = new AlertDialog.Builder(Chat.this); 
        confirmQuit.setMessage("Download image?"); 

        // Buttons on dialog 
        confirmQuit.setPositiveButton("Download", new DialogInterface.OnClickListener() { 
         @Override 
         public void onClick(DialogInterface dialog, int which) { 

         } 
        }); 
        confirmQuit.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
         @Override 
         public void onClick(DialogInterface dialog, int which) { 
          // Do nothing 
         } 
        }); 
        confirmQuit.create(); 

       } catch (Exception e) { 
        e.printStackTrace(); 
       } 

      } 
     } 
    }); 
} 

這就是DialogInterface.OnClickListener內的機器人代碼,我想知道我怎麼可以訪問的變量positionimgName

通常在這些情況下,我創建一個「全局」私有變量作爲我活動的一個屬性,所以我可以在任何地方訪問它,但它看起來不正確。有人可以幫忙嗎?

在此先感謝。

回答

2

只要改變

String imgName = ... 

爲以

final String imgName = ... 

Java教程Anonymous Classes

訪問封閉範圍內的局部變量

與本地類相似,匿名類可以捕獲變量;他們有 同樣獲得封閉範圍內的局部變量:

  • 匿名類可以訪問它包圍類的成員。
  • 匿名類無法訪問未包含在最終的或有效最終的封閉範圍內的局部變量。
+0

我覺得很愚蠢.-。 要閱讀有關最終屬性。謝啦。 :) –

+1

@JoãoMenighin編輯了更多細節的答案。希望它是有用的:) – matiash