[英]Cannot assign value to final variable - Android
我試圖定義一個TextView final,但是說:無法將值分配給final變量。
在下面的代碼中,我插入了一些注釋,以幫助更輕松地發現問題。
有什么幫助嗎?
提前致謝!
碼:
public class single_presentation extends Activity
{
List<Slider> list;
final TextView correctAnswerHolder = null;
int i = 0;
DatabaseHelper db = new DatabaseHelper(this);
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.single_presentation);
String value = getIntent().getStringExtra("PRESENTATION_SESSION_ID");
list = db.getAllSlidersByPresentation(value);
db.close();
String question = list.get(0).getQuestion();
TextView questionText = (TextView) findViewById(R.id.questionText);
questionText.setText(question);
String correctAnswer = list.get(0).getCorrectAnswer();
TextView correctAnswerText = (TextView) findViewById(R.id.correctAnswerText);
String wrongAnswer_1 = list.get(0).getWrongAnswer1();
TextView wrongAnswerText_1 = (TextView) findViewById(R.id.wrongAnswerText_1);
String wrongAnswer_2 = list.get(0).getWrongAnswer2();
TextView wrongAnswerText_2 = (TextView) findViewById(R.id.wrongAnswerText_2);
String wrongAnswer_3 = list.get(0).getWrongAnswer3();
TextView wrongAnswerText_3 = (TextView) findViewById(R.id.wrongAnswerText_3);
Uri imgUri = list.get(i).getImageURI();
ImageView imageView = (ImageView)findViewById(R.id.imageView);
imageView.setImageURI(imgUri);
final String [] answers = {correctAnswer, wrongAnswer_1, wrongAnswer_2, wrongAnswer_3};
ArrayList<String> answersList = new ArrayList<String>(Arrays.asList(answers));
long seed = System.nanoTime();
Collections.shuffle(answersList, new Random(seed));
Log.e("First Slider Answers ", answersList.toString());
correctAnswerText.setText(answersList.get(0));
wrongAnswerText_1.setText(answersList.get(1));
wrongAnswerText_2.setText(answersList.get(2));
wrongAnswerText_3.setText(answersList.get(3));
if (correctAnswerText.getText().toString().equals(correctAnswer))
correctAnswerHolder = correctAnswerText; // HERE is the problem
else if (wrongAnswerText_1.getText().toString().equals(correctAnswer))
correctAnswerHolder = wrongAnswerText_1; // HERE is the problem
else if (wrongAnswerText_2.getText().toString().equals(correctAnswer))
correctAnswerHolder = wrongAnswerText_2; // HERE is the problem
else if (wrongAnswerText_3.getText().toString().equals(correctAnswer))
correctAnswerHolder = wrongAnswerText_3; // HERE is the problem
如果聲明變量final,則只能分配一次。
更多信息: http : //www.javamex.com/tutorials/synchronization_final.shtml
在Java中聲明為final的任何變量都無法重新分配值。 在這里,您首先要為變量分配null,以便您無法對其進行更改。 您能否詳細說明為什么將變量聲明為final?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.