2014-02-16 5 views
0

У меня есть ImageView по активности A и кнопка в действии B. ImageView установлен на «невидимый». Мне было интересно, могу ли я сделать ImageView видимым, когда кнопка нажата и будет отображаться навсегда (пока пользователь не удалит приложение или не сбросит его).Видимость ImageView через действия

Я нашел этот кусок кода, который делает ImageView повернуть видимым:

example.setVisibility(View.VISIBLE); 

я знаю, я должен использовать SharedPreferences, чтобы заставить его работать, но я много раз пытался, но безуспешно.

Может кто-нибудь мне помочь?

Большое вам спасибо.

P.s. То, что мне нужно сделать, - создать (или просто сделать видимым) тик, чтобы пользователь знал, какой уровень он выполнил. Если есть другой способ, и я знаю, что есть, дайте мне знать.

ответ

1

Кажется, вы установили видимость вашего ImageView в XML с помощью

android:visibility="invisible" 

Вместо этого всегда установить видимость в коде, используя что-то вроде -

SharedPreferences sharedPreferences; 

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    sharedPreferences = getSharedPreferences(getString(R.string.sp_key), 
      MODE_PRIVATE); 
    ImageView example = (ImageView) findViewById(R.id.example_image); 
    boolean visible = sharedPreferences.getBoolean(R.string.visible, false); 

    if (visible) { 
     example.setVisibility(View.VISIBLE); 
    } else { 
     example.setVisibility(View.INVISIBLE); 
    } 
} 

Затем, когда пользователь нажимает на флажок или что-то, чтобы показать, что они хотят сделать ваш ImageView видимым, сохраните его в SharedPreferences. Более подробную информацию о примере SharedPreferences можно найти на странице How to use SharedPreferences in Android to store, fetch and edit values.

+0

спасибо. Это очень помогло! –

+0

Это работает, но когда я касаюсь кнопки (которая должна установить видимость на «видимый», по вашему коду), активность падает. Линией, которая дает проблему, является следующая: example.setVisibility (View.VISIBLE); это неудобно ... –

0

Я решил. Метод Rnk - это ключ. Он возвратил ошибку, потому что я использовал findViewById с объектом из другого макета, и он вернул нулевую точку. Поэтому я импортировал макет, где находится ImageView, и я решил. СПАСИБО.

Смежные вопросы