当我写这段代码时,我看到了这个错误。
我看到“无法分配最终的局部变量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 :(得分:3)
peyvaDawi被声明为final,因此一旦分配了值,就无法重新分配它。只是不要这样做。为什么要更改范围仅限于此方法的本地String变量的值?
也不要使用==
比较字符串。请改用equals(...)
或equalsIgnoreCase(...)
方法。理解==检查两个对象是否相同而不是您感兴趣的。另一方面,这些方法检查两个字符串是否具有相同顺序的相同字符,并且这才是最重要的。而不是
if (fu == "bar") {
// do something
}
做,
if ("bar".equals(fu)) {
// do something
}
,或者
if ("bar".equalsIgnoreCase(fu)) {
// do something
}
此外,您应该在大括号中包含 所有 块,包括所有if,else块,即使它们只有一行,以免误导自己思考由于错位的缩进,一行代码在块中,而实际上并非如此。