перерисовать активность в Android - PullRequest
0 голосов
/ 16 января 2011

моя проблема кажется простой, но мне не удается найти ответ здесь.

У меня есть разные действия в одном приложении. Мероприятия начинают друг друга. У меня есть «главный экран» , который показывает все различные доступные уровни, щелчки пользователя на уровне, и эта активность запускается. Когда пользователь заканчивает этот уровень, он может нажать кнопку «Назад», чтобы перейти Главный экран и начать другой уровень. Когда нажата кнопка «Назад», я хотел бы снова перерисовать «главный экран», так как на этот раз большой палец для пройденного уровня будет другим, чтобы показать, что он пройден.

Итак, как мне выполнить перерисовку активности после нажатия кнопки возврата? (Полагаю, мне нужно добавить код в метод Activity.onResume) (Я использую SharedPreferences, чтобы сохранить состояние законченных уровней)

Основное действие на экране:

    /** Called when the activity is first created. */
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.maps);</p>

<code>    SharedPreferences settings = getSharedPreferences((getResources().getString(R.string.PREFS_HI)),0);
    /**/
      GridView gridview = (GridView) findViewById(R.id.gridview);
      gridview.setAdapter(new ImageAdapter(this,(settings.getBoolean("level_1_finished", false))));
      /**/
      gridview.setOnItemClickListener(new OnItemClickListener() {
        @Override
          public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
            //Open the map which was clicked on, if there is one
            if(position+1 > 1){
                Toast.makeText(maps.this, "Level " + (position+1) + " is not yet available!", Toast.LENGTH_SHORT).show();
            }else{
                Toast.makeText(maps.this, "Opening Level " + (position+1), Toast.LENGTH_SHORT).show();
                Intent myIntent = new Intent(v.getContext(), Tutorial2D.class);
                startActivity(myIntent);
            }
          }
      });
}
</code>

Затем ImageAdapter использует логическое значение true / false, чтобы выбрать источник изображения: незаконченный или готовый большой палец.

Ответы [ 2 ]

0 голосов
/ 16 января 2011

Сначала поставьте свой GridView объект в качестве участника класса. Затем переопределите метод onResume(), в котором вы можете переустановить адаптер вида сетки в зависимости от действий пользователя.

private GridView gridview;
@Override
protected void onResume() {
    super.onResume();
    gridview.setAdapter(/* your new ImageAdapter here */);
}
0 голосов
/ 16 января 2011

Вы должны использовать startActivityForResult() метод Activity . По сути, вы начинаете следующую активность, запрашивая состояние запроса после его завершения. Непосредственно перед тем, как он завершится, он должен вызвать setResult (что позволяет указать, прошел ли пользователь уровень или нет). У действия, которое вызвало его (ваш главный экран), будет вызываться метод onActivityResult(). В этом методе вы можете обновлять свои представления по мере необходимости.

...