如何使用onResume()更新活动(Android Studio)

时间:2016-10-25 10:08:30

标签: java android android-studio parse-platform activity-lifecycle

对不起,如果这是一个糟糕的礼节,但我现在重新写了我的整个问题,因为我问的原始问题实际上与我刚刚意识到的问题无关。我在返回活动后更新活动中的代码时遇到问题。第一个活动包含一组与关卡相关的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方法运行,我认为它每次都运行,无论如何。

0 个答案:

没有答案