0

내 회 전자에 대한 내 onItemSelected 함수가 액티비티의 변수 (최종 선언 된 변수)를 인식하지 못합니다. 나는 동일한 변수를 인식하는 버튼에 대해 동일한 액티비티에서 onClickListener 함수를 가지고 있습니다. (다음 모든 라인에)Android onItemSelected 함수가 인스턴스 변수를 인식하지 않습니다.

public class Currency extends Activity implements OnItemSelectedListener{ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    setContentView(R.layout.activity_currency); 
    final TextView tv2 = (TextView) findViewById(R.id.textView2); 
    final TextView tv3 = (TextView) findViewById(R.id.textView3); 

} 

@Override 
public void onItemSelected(AdapterView<?> arg0, View v, int position, 
     long arg3) { 
    switch (position) { 
    case 0: 
     tv2.setText("something"); 
     tv3.setText("something"); 
     break; 
    case 1: 
     tv2.setText("something"); 
     tv3.setText("something"); 
    case 2: 
     tv2.setText("something"); 
     tv3.setText("something"); 
     break; 

     default: 
     break; 
    } 

} 

오류 :

여기에 코드의 일부이다 'TV2가 해결 될 수없는'클래스 수준에서

+0

귀하의 괄호 정말 일치하지 않습니다. 코드가 클래스 내에 있는지 확인 하시겠습니까? –

+0

코드는 약 2 페이지 정도이므로이 게시물에 대해 매우 편집되었습니다. 그렇지만 클래스에 있습니다. – LMVogel

+1

그들은 같은 맥락에 있지 않습니다. textviews는 onCreate에서 선언됩니다. 그들에게 인스턴스 필드 – njzk2

답변

1

선언 TV2 아래에있다. 에서 onCreate

에서 선언을 제거
private TextView tv2 

귀하의 코드는 코드를 아래처럼해야한다

public class Currency extends Activity implements OnItemSelectedListener{ 
private TextView tv2; 
private TextView tv3; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    setContentView(R.layout.activity_currency); 
    tv2 = (TextView) findViewById(R.id.textView2); 
    tv3 = (TextView) findViewById(R.id.textView3); 

} 


@Override 
public void onItemSelected(AdapterView<?> arg0, View v, int position, 
     long arg3) { 
    switch (position) { 
    case 0: 
     tv2.setText("something"); 
     tv3.setText("something"); 
     break; 
    case 1: 
     tv2.setText("something"); 
     tv3.setText("something"); 
    case 2: 
     tv2.setText("something"); 
     tv3.setText("something"); 
     break; 

     default: 
     break; 
    } 

} 
+0

상세한 답변을 주셔서 감사합니다. @ njzk2는 위의 답을 도와주었습니다. – LMVogel

+0

오. 문제 없습니다. 나는 처음부터 그것을 보았다. – AAnkit