Android Final变量错误

时间:2016-05-23 11:34:47

标签: android variables for-loop final

我有这个代码,从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变量。它建议我把它转换成一个运行正常的元素数组,但返回的结果不是预期的结果。

3 个答案:

答案 0 :(得分:0)

你可以't_replace'全球化。 你无法修改final,因为它们是常量。

答案 1 :(得分:0)

您无法在运行时修改最终变量 你删除了final关键字 final EditText input = new EditText(RuleEngine.this);

答案 2 :(得分:0)

final变量保存对象的引用时,意味着可以修改对象的内容,但变量将始终指向同一个对象。 此外,如果您需要从内部类访问变量(如本例所示),则需要将其声明为final。之后,您可以自由更改其值(它不是常数)。

因此,在代码的开头,只需添加

final String t_replace = "";