Android 错误:无法分配最终局部变量分数,因为它是在封闭类型中定义的?
我试图使用getIntent值(score),它是从以前的活动中检索的,但似乎这是不可能的。似乎if else下的加减法无法检测分数。还有别的办法吗Android 错误:无法分配最终局部变量分数,因为它是在封闭类型中定义的?,android,android-intent,Android,Android Intent,我试图使用getIntent值(score),它是从以前的活动中检索的,但似乎这是不可能的。似乎if else下的加减法无法检测分数。还有别的办法吗 package com.mkyong.android; import com.mkyong.android.R; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.os.Bundle;
package com.mkyong.android;
import com.mkyong.android.R;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.widget.Button;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;
import android.widget.Toast;
import android.view.View;
import android.view.View.OnClickListener;
public class App2Activity extends Activity {
private RadioGroup radioAnswerGroup2;
private RadioButton radioAnswerButton2;
private Button btnSubmit2;
Button button2;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main2);
addListenerOnButton();
}
public void addListenerOnButton() {
final Context context = this;
radioAnswerGroup2 = (RadioGroup) findViewById(R.id.radioAnswer2);
button2 = (Button) findViewById(R.id.button2);
Button button2pre = (Button) findViewById(R.id.button2pre);
Intent intent = getIntent();
final int score = intent.getIntExtra("int", -1);
final TextView result2 = (TextView) findViewById(R.id.txtResult2);
result2.setText("Result counting: " + String.valueOf(score));
button2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
int correctId2 = (R.id.answer2b);
// get selected radio button from radioGroup
int selectedId2 = radioAnswerGroup2.getCheckedRadioButtonId();
// find the radio button by returned id
radioAnswerButton2 = (RadioButton) findViewById(selectedId2);
if (selectedId2==correctId2){
score = score + 1;
//show toast saying it is correct
//Context context = getApplicationContext();
//CharSequence text = ("You are correct!");
//int duration = Toast.LENGTH_SHORT;
//Toast toast = Toast.makeText(context, text, duration);
//toast.show();
}
else{
score = score - 1;
//toast incorrect
//Context context = getApplicationContext();
//CharSequence text = ("You are wrong but it's ok and the answer is Data Link");
//int duration = Toast.LENGTH_LONG;
//Toast toast = Toast.makeText(context, text, duration);
//toast.show();
}
Intent intent2 = new Intent(App2Activity.this, App3Activity.class);
intent2.putExtra("int", score);
startActivity(intent2);
}
});
button2pre.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Intent intent = new Intent(context, AppActivity.class);
startActivity(intent);
}
});
}
}
只需从以下位置删除
final
关键字:
final int score = intent.getIntExtra("int", -1);
因为final
变量只能通过初始值设定项或赋值语句初始化一次
阅读更多信息。将
int score
移动为全局变量,以便在onClick中访问它。您还需要删除final
关键字,以便在初始化后更改该值
public class YourActivity extends Activity{
int score;
public onCreate( /*...etc.*/
你好,卡泽卡格·加拉,非常感谢你的回复。我这样做了,但错误仍然存在,当我突出显示错误时,软件给了我快速修复,使其最终成为一个全局变量,然后按照另一个答案的建议。如果以后要对变量进行更改,请不要将其设置为final。您正在谈论的错误是,您正在使用Eclipse?黄色下划线的语句可以忽略,它们是警告,而不是错误。omg!现在我明白了。你是我的救世主,非常感谢你