2012-10-30 3 views
2

그래서 매개 변수 'int position'이 전달 된 목록보기에 대해 onItemLongClickListener가 있습니다. 내부에는 두 개의 버튼이있는 alertDialogBuilder가 있습니다. 단추에 대해 또 다른 onclickListener가 있습니다. 두 번째 청취자 내부에서 그 위치에 액세스해야합니다. 어쨌든 글로벌화하지 않고이를 수행 할 수 있습니까?onclicklistener에서 변수에 액세스


public boolean onItemLongClick(AdapterView parent, View itemView, int position, long id){ 

    AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(BookFace.this); 
    alertDialogBuilder.setTitle("Choose an option."); 
    alertDialogBuilder 
    .setMessage("What would you like to do?") 
    .setCancelable(true) 
    .setPositiveButton("Edit", new DialogInterface.OnClickListener(){ 

     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      Intent intent = new Intent(); 
      intent.putExtra("position", position); //Can't access this variable 
      intent.setClass(SomeClass.this, EditActivity.class); 
      startActivity(intent); 
    } 

도움 주셔서 감사합니다.

+1

왜 글로벌하게 만들지 않으시겠습니까? – keyser

답변

0

Java에서 처음에는 final으로 선언 된 경우에만 내부 클래스 선언에서 외부 변수에 액세스 할 수 있습니다. 그래서 당신은 추가 할 수 있습니다 : 당신의 방법의 상단에

final int selectedPosition = position; 

을하고 마지막으로 위치를 변경하는 경우 즉, 귀하의 추가에

intent.putExtra("position", selectedPosition); 
+0

결승전을 잊었습니다. 고맙습니다 :) – Bibodha

1

을 그 값을 사용, 그것은 당신이 내에서 액세스 할 수 있도록해야한다 onClick 메서드.