2014-06-10 127 views
-7

当我试图把这些变量A(字符串)等于E(它来自一个纯文本) 这个出现在错误的行(在下面的代码):使一个变量最终Android Studio中

Variable 'e' is accessed from within inner class, needs to be declared final. 

我不知道如何做'e'最后。

public void MORSE(View v) 
    { 

     EditText e=(EditText)findViewById(R.id.text); 
     TextView T=(TextView)findViewById(R.id.translation); 
     Button TRAD=(Button) findViewById(R.id.translate); 
     TRAD.setOnClickListener(new View.OnClickListener() { 
      @Override 
     public void onClick(View view){ 

     String A; 
     A=""+e;      //HERE IS THE ERROR. 

    } 
}); 
} 
+0

e是你的'View'它不是文本。使用e.getText() –

+0

'final EditText e' – cy3er

+0

'final EditText e =(EditText)findViewById(R.id.text);' – Dima

回答

1

您试图将字符串添加到一个EditText:

A=""+e; 

这不能做。
你可能想将字符串添加到字符串,而不是:

A = "" + e.getText().toString(); 
1

您不能分配e的,因为e是一个EditText同时是一个字符串。这是一个java问题,我建议你在进入android之前从新波士顿的教程中学习java。 无论如何,你需要使用

A = e.getText(); 

无需最终的变量,它使用final关键字。

在这里使用final关键字会导致问题。最终变量不能编辑,因为变量将保存EditText的文本表示,而不是实际的文本。尽管如此,最后一个变量是这样表示的:

final String finalString = "This string will now for ever hold this value. This can't be changed.";