2014-05-23 3 views
1

저는 Java에서 좀 새로운 것이고 간단한 질문이 있습니다. DialogInterface.OnClickListener 내부의 안드로이드 코드와 내가 변수에 액세스 할 수있는 방법을 알고 싶습니다 positionimgName중첩 된 객체 액세스 부모 속성

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(); 
       } 

      } 
     } 
    }); 
} 

: 아래의 코드에서?

이러한 경우 일반적으로 내 액티비티의 속성으로 "전역"개인 변수를 만들어 어디서나 액세스 할 수 있지만 올바르게 보이지 않습니다. 누군가 도울 수 있습니까?

미리 감사드립니다.

답변

2

그냥

String imgName = ... 

Anonymous Classes의 자바 튜토리얼에서

final String imgName = ... 

에 변경 :

은 포함하는 범위의 지역 변수를 액세스

로컬 클래스와 마찬가지로 익명 클래스는 변수를 캡처 할 수 있습니다.

  • 익명의 클래스가 둘러싸는 클래스의 멤버에 액세스 할 수 있습니다 그들은 클로징 범위의 지역 변수에 동일한 액세스 있습니다.
  • 익명 클래스 은 최종 범위으로 선언되지 않았거나 사실상 최종 변수 인 해당 범위에서 로컬 변수에 액세스 할 수 없습니다.
+0

나는 바보 같은 느낌 .-. 최종 속성에 대해 읽습니다. 고마워. :) –

+1

@ JoãoMenighin이 (가) 자세한 내용에 대한 답변을 편집했습니다. 희망이 유용하다 :) – matiash