2011-09-16 2 views
-1

저는이 질문을 아주 기본적인 것으로 알고 있으며, 이미 내 것과 같은 또 다른 것을 발견했습니다. 그러나 솔직히 내가 뭘 잘못하고 있는지 알지 못합니다.다른 클래스의 변수 []에 접근하는 데 문제가 있습니다.

public class InteractiveArrayAdapter extends ArrayAdapter<Model> { 

    private final List<Model> list; 
    private final Activity context; 

    public int teste; 

    public InteractiveArrayAdapter(Activity context, List<Model> list) { 
     super(context, R.layout.rowbuttonlayout, list); 
     this.context = context; 
     this.list = list; 

    } 

    public int getTest() 
    { 
     return teste; 
    } 

    static class ViewHolder { 
     protected TextView text; 
     protected CheckBox checkbox; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     teste = 2; 
.... 
} 
} 

및 기타 클래스 :

try{ 

       InteractiveArrayAdapter adapt = new InteractiveArrayAdapter(this, 
      getAPPS(0)); 
       int test = adapt.getTest(); 
       Toast.makeText(this, Integer.toString(test), Toast.LENGTH_LONG).show(); 
       Log.v("TAG",Integer.toString(test)); 
      }catch(Exception e) 
       { 
       Log.v("EXCEPTION",e.toString()); 
      } 

편집 : 나는 바보 같은 실수에 null을 얻고 있었다, 그리고 대부분의 말대로 지금은 원시적 점점 0을 예상하고있다.

내 앱의 어느 시점에서 체크 상자가 클릭 될 때마다 getView가 실행됩니다. 그 문자열을 점진적으로 배열 배열에 저장하고 싶습니다. (이해하기 쉽도록 int를 넣었습니다. 이제는 실수 였음을 깨달았습니다.) 그리고 나서 사용자가 ok를 입력하면 전체 배열에 액세스하려고합니다. . 그것이 가능한 한 원하는지 궁금합니다.

그래서 내가 할 때이

InteractiveArrayAdapter adapt = new InteractiveArrayAdapter(this, 
       getAPPS(0)); 

이, 의미가 내가 다시 아무것도 실행 할 필요가 없기 때문에, 난 그냥 생성 된 배열을 검색 할 - 가능하면!

+3

"this.teste"를 null이 아닌 값으로 초기화 했습니까? –

+4

여기에 쓰여 있듯이,'getTest()'가'null'을 리턴하는 것은 불가능합니다. 이 메소드는 프리미티브'int'를 반환하는 것으로 선언됩니다. – Mac

+0

이 진짜 질문입니까? –

답변

1

하지만 이는 코드에 따라 발생해야합니다. teste 변수를 업데이트하기 위해 B 메서드를 호출하지 않습니다.

2

코드가 컴파일되지 않습니다. return this.teste;return this.test;이어야합니다.

+0

죄송합니다. 질문을하는 것은 실수였습니다 (사본 붙여 넣기를하지 않았습니다). – Tiago

2

이것은 분명히 컴파일되지 않기 때문에 이것은 직접 복사/붙여 넣기가 아닙니다. 실제 오류나 문제를 다룰 때마다 실제 코드를 붙여 넣는 것이 가장 좋습니다. 우리는 모두 프로그래머이므로 읽을 수 있습니다.

위에 표시된 구조를 기반으로 return this.teste (입력해야만하는 코드)이 return this.test이어야합니다. 또는 생성자에서 인스턴스 변수 test을 초기화하지 않았습니다.

작성중인 실제 코드를 표시하지 않고 말할 수는 없습니다 (특히 test 변수를 초기화하는 섹션과 값을 반환하는 부분이 누락되었습니다. 독자는 마음이 아프므로 걱정됩니다.)).

그래서 두 후보가 있습니다. 그러나 다른 메모에서 test 변수를 public으로 표시하면 메소드 호출없이 클래스에 액세스 할 수 있기 때문에 getter/setter 메서드가 필요하지 않습니다. 그것이 대중이하는 일입니다.

관련 문제