对不起,如果这是一个糟糕的礼节,但我现在重新写了我的整个问题,因为我问的原始问题实际上与我刚刚意识到的问题无关。我在返回活动后更新活动中的代码时遇到问题。第一个活动包含一组与关卡相关的imageButtons。首次运行应用程序时,仅启用一级按钮。单击该按钮时,它会将用户发送到新活动,在该活动中,他们必须拼写一定数量的单词以解锁下一级别。这是我的关卡选择活动的代码。
public class QuizLevelSelect extends AppCompatActivity {
private static int myLevel;
ImageButton level1, level2, level3, level4;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_quiz_level_select);
TextView title = (TextView) findViewById(R.id.title);
Typeface custom_font = Typeface.createFromAsset(getAssets(), "fonts/variane-script.regular.ttf");
title.setTypeface(custom_font);
level1 = (ImageButton)findViewById(R.id.level1);
level2 = (ImageButton)findViewById(R.id.level2);
level2.setEnabled(false);
level3 = (ImageButton)findViewById(R.id.level3);
level3.setEnabled(false);
level4 = (ImageButton)findViewById(R.id.level4);
level4.setEnabled(false);
level1.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
Intent i = new Intent(getApplicationContext(), Main2Activity.class);
i.putExtra("intVariableName", 1);
startActivity(i);
finish();
}
});
level2.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
Intent i = new Intent(getApplicationContext(), Main2Activity.class);
i.putExtra("intVariableName", 2);
startActivity(i);
finish();
}
});
level3.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
Intent i = new Intent(getApplicationContext(), Main2Activity.class);
i.putExtra("intVariableName", 3);
startActivity(i);
}
});
}
@Override
protected void onResume(){
super.onResume();
ParseQuery<ParseObject> query = ParseQuery.getQuery("Wordbank");
query.whereEqualTo("username", ParseUser.getCurrentUser().getUsername());
query.findInBackground(new FindCallback<ParseObject>() {
@Override
public void done(List<ParseObject> objects, ParseException e) {
for (ParseObject object : objects){
myLevel = object.getInt("level");
}
});
if (myLevel == 2){
level2.setEnabled(true);
}
}
}
当单击第一级按钮时,它会启动一个新活动,其中用户必须拼写一定数量的单词(此时仅为1,用于测试目的),当用户拼写所需的单词时,它应该是将它们发送回级别选择活动并解锁级别2按钮。这是第二个活动的代码,用于检查他们拼写单词,然后在将它们返回到级别选择活动之前更新它们在Parse.com上的级别。
if (count == 1){
ParseQuery<ParseObject> query2 = ParseQuery.getQuery("Wordbank");
query2.whereEqualTo("username", ParseUser.getCurrentUser().getUsername());
query2.findInBackground(new FindCallback<ParseObject>() {
@Override
public void done(List<ParseObject> objects, ParseException e) {
if (e == null) {
objects.get(0).put("level", ++intValue);
objects.get(0).saveInBackground();
Intent i = new Intent(getApplicationContext(), QuizLevelSelect.class);
startActivity(i);
finish();
}
}
});
}
所有这一切都很好,除非用户返回到水平选择活动时,2级按钮没有启用,但是如果我按回我的手机然后返回到水平选择活动,它就会启用。我假设这是因为当第二个活动将用户返回到级别选择活动时,onResume()方法没有运行,我也尝试过onStart()和onRestart()但是都没有工作。我知道它与我的活动的生命周期有关,但我不明白为什么我必须退出活动,然后回到它的onResume方法运行,我认为它每次都运行,无论如何。