簡體   English   中英

無法將值分配給最終變量-Android

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM