2012-07-22 4 views
-1

이 코드를 작성할 때이 오류가 표시됩니다.Android 최종 변수 오류

"마지막 지역 변수 peyvaDawi는 표시된 유형의 둘러싸 기 유형으로 정의되어 있으므로 할당 할 수 없습니다"를 참조하십시오.

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    ferheng=new Veritabani(this); 
    final ImageButton btn=(ImageButton)findViewById(R.id.btnBigere); 
    final EditText edtPeyv=(EditText)findViewById(R.id.edtPeyv); 
    final RadioButton rbKT=(RadioButton)findViewById(R.id.rbKT); 
    final RadioButton rbTK=(RadioButton)findViewById(R.id.rbTK); 

    final String peyvaDawi="emre"; 
    btn.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View arg0) { 
      final boolean KT=rbKT.isChecked(); 
      final boolean TK=rbTK.isChecked(); 

      sonuc=""; 
      String strPeyv=edtPeyv.getText().toString(); 
      Boolean tenePeyv=false; 
      if(strPeyv==peyvaDawi) 
       tenePeyv=true; 
      else 
       tenePeyv=false; 
      if(KT) 
       Arama(strPeyv,"kurdi",tenePeyv); 
      if(TK) 
       Arama(strPeyv,"tirki",tenePeyv); 
          peyvaDawi=strPeyv;//<<<<<<<<<<<<<<<<< i see error in this line. 

     } 
    }); 
} 

줄에 오류가 있습니다. peyvaDawi = strPeyv;

+0

==와 문자열을 비교하지 않습니다. – Shine

답변

3

peyvaDawi가 final로 선언되어 있으므로 일단 값이 할당되면 다시 할당 할 수 없습니다. 그냥 하지마. 어쨌든 범위가이 메소드로 제한되는 로컬 String 변수의 값을 변경하려는 이유는 무엇입니까?

또한 ==을 사용하여 문자열을 비교하지 마십시오. 대신 equals(...) 또는 equalsIgnoreCase(...) 메서드를 사용하십시오. 두 개의 문자열이 같은 순서로 동일한 문자를 가지고 있는지 확인하는 방법은 여기에서 중요한 것입니다. 그래서 그 대신

if (fu == "bar") { 
    // do something 
} 

의 경우에도,

if ("bar".equals(fu)) { 
    // do something 
} 

또는

if ("bar".equalsIgnoreCase(fu)) { 
    // do something 
} 

는 또한 당신이 다른 블록, 모든 경우를 포함 중괄호에서 모든 블록을 둘러싸해야 할 코드 길이가 틀린 들여 쓰기로 인해 블록에 있다고 생각하도록 오도하지 않도록 한 행에 불과합니다. 실제로는 그렇지 않습니다.