所以我试图让用户能够在按钮上设置onClickListener,该按钮将在单击时更改TextView。但是,这导致出现最终声明错误,因为我是从内部类调用它的。我不明白为什么要将它设置为最终的,不可更改的变量。我只希望Textview在onclick上接受setText方法,但是在使用片段时会阻止我这样做。
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_main, container, false);
View v2 = inflater.inflate(R.layout.flash_fragment, container, false);
Button reply = (Button) v2.findViewById(R.id.replyB);
TextView flashtext = (TextView) v2.findViewById(R.id.flashtext);
flashtext.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//start playing the string word by word
//on the textview : flashtext
***flashtext.setText("test");***
}
});
最佳答案
我不明白为什么要求将其设置为最终的,不可更改的变量
因为flashtext
会在onCreateView()
返回后立即超出范围。它是一个局部变量,因此引用仅在onCreateView()
调用期间有效。
如果只想从该侦听器使用flashtext
,则使用final
是最简单的方法。
如果希望在此片段的其他地方使用flashtext
,请使flashtext
成为Fragment
子类上的一个字段。