public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
EditText stringtext; // final error here
stringtext = (EditText) findViewById(R.id.editText);
TextView textView2; // final error here
textView2 = (TextView) findViewById(R.id.textView2);
Button startprogram = (Button) findViewById(R.id.button);
View.OnClickListener listener = new View.OnClickListener(){
@Override
public void onClick(View view){
// Insert what you want the button to do here!
setContentView(R.layout.helloworld);
}
};
startprogram.setOnClickListener(listener);
// this is button to check the inserted code
Button checkbutton = (Button) findViewById(R.id.checkbutton);
View.OnClickListener listener1 = new View.OnClickListener(){
public void onClick(View view){
//insert button command here
textView2.setText(stringtext.getEditableText());
}
};
}
我得到一个错误,说明本地变量stringtext和textview2需要完成?如果我告诉他们,如果我说对了,他们就不会更新了…?
final
仅表示不能更改变量的引用。对象状态仍然会正确改变。
如果一个匿名内部类(例如你的onClickListeners
)引用了一个局部变量,该变量必须是final
。这是因为匿名内部类实际上接收了该变量的副本, Java不希望原始和副本不同步。
标记为final的基本类型(例如int
或double
)不能改变值;一旦设定好,它就卡住了。然而,引用对象的变量就是一个引用(本质上是对象在内存中的位置)。
引用不能更改为指向新对象,但对象的字段和方法可以正常使用。