我有这个代码,从for循环中调用
void var_init(String to_match,String[][] temp) {
String t_match=to_match;
//problem in the below line
String t_replace = "";
AlertDialog.Builder builder = new AlertDialog.Builder(RuleEngine.this);
builder.setTitle("Enter Value for"+t_match);
// Set up the input
final EditText input = new EditText(RuleEngine.this);
builder.setView(input);
// Set up the buttons
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
t_replace = input.getText().toString();
}
});
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
builder.show();
它给了我一个错误,即t_replace我从内部类中获得了并且应该被声明为final,当我用t_replace变量添加final时,它表示不能将值赋给最终的t_replace变量。它建议我把它转换成一个运行正常的元素数组,但返回的结果不是预期的结果。
答案 0 :(得分:0)
你可以't_replace'全球化。 你无法修改final,因为它们是常量。
答案 1 :(得分:0)
您无法在运行时修改最终变量
你删除了final关键字
final EditText input = new EditText(RuleEngine.this);
答案 2 :(得分:0)
当final
变量保存对象的引用时,意味着可以修改对象的内容,但变量将始终指向同一个对象。
此外,如果您需要从内部类访问变量(如本例所示),则需要将其声明为final
。之后,您可以自由更改其值(它不是常数)。
因此,在代码的开头,只需添加
final String t_replace = "";