2013-10-07 3 views
2

Я делаю приложение для Android, и у меня есть трудности с сохранением видимости ImageButton, когда он нажимается. Я ищу по другим темам, но я не нашел никаких решений.save imageButton Visibility [Android]

К примеру, у меня есть кнопка, которая станет белым, когда она нажата, и я хочу, чтобы сохранить его видимость при переключении деятельности или представления:

OnClickListener oclFavourite = new OnClickListener() { 
    @Override 
    public void onClick(View arg0) { 
     ImageButton favWhite = (ImageButton) findViewById(R.id.favoriwhite); 
     ImageButton favori = (ImageButton) findViewById(R.id.favorigrey); 
     favWhite.setVisibility(View.VISIBLE); //The white button I want to save 
     favourite.setVisibility(View.INVISIBLE); //The initial button 
    } 
}; 
favori.setOnClickListener(oclFavori); 

Я пытался изучать SharedPreferences функцию, я унаследовать сохранить TextView, но я не знаю, как действовать с ImageButton или ImageView.

+0

сохранить свою видимость? что вы в действительности имеете в виду, можете ли вы рассказать об этом – Goofy

+0

, так как вы должны использовать метод singleton java. –

+0

Почему вы используете две кнопки? – Swetank

ответ

2

вы можете переключать булевский флаг, когда вы переключаете между видимостью и невидимостью. Затем сохраните флаг в SharedPreferences. Что-то вроде этого

private boolean flag = true; 

private void setvisible(){ 
    flag = true; 
    yourView.setVisibility(View.VISIBLE); 
    // save the flag 
} 

private void setInvisible(){ 
    flag = false; 
    yourView.setVisibility(View.INVISIBLE); 
    // save the flag 
} 

Сейчас в OnCreate

onCreate(Bundle b){ 
    ............. 
    if(flag) 
     // make it visible 
    else 
     // make it invisible 
} 
2

Использование sharedpreference сохранить visibilty, используя это как isButtonVisible = false;

SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this); 
Editor edit = sp.edit(); 
edit.putBoolean("BUTTON", false); 
edit.commit(); 

А затем загрузить его с помощью этой

SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this); 
sp.getBoolean("BUTTON",true); 

И положите некоторое состояние как

if(isButtonVisible==true){ 
    favWhite.setVisibility(View.VISIBLE); 
}else{ 
    favWhite.setVisibility(View.INVISIBLE); 
} 

Спросите меня, есть ли у вас какие-либо другие вопросы.

0

Это очень просто. Просто булевы, переключите его на true/false на основе вашего требования. Вы можете использовать SharedPreferences, чтобы получить эти значения позже, или вы также можете сделать логическое статическое (однако использование статических переменных не предлагается все время). Также использование одной кнопки само по себе решит вашу цель. Просто переключите фон или нажмите кнопку при нажатии. Также, если вы показываете две кнопки, используйте view.GONE вместо View.Invisible, так как сделанное представление будет полностью удалять пространство, сделанное представлением в родительском, вместо того чтобы сделать его невидимым, только исчезнет из вида, но сохранит его пространство. Сейчас подходит к этому вопросу в OnClickListener кнопке использовать в вашем activity.Now в boolean isButonclicked =false перед накачиванием вашей кнопки в Teh OnCreate метод вашей деятельности вы проверяете

SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this); 
isButonclicked=sp.getBoolean("BUTTON",false); 
buttonSwapping(); 

Теперь создать метод для решений, которые вы хотите просмотреть: :

public void buttonSwapping(){ 
    if(isButonclicked){ 

    ///// findViewById() your clicked imageView and set visibilty to Visible.All the 
     imageView set Visibilty as Gone.  

}else{ 
    /// findViewById() your normal imageView and set visibilty to Visible. 
} 
    ////Make sure that the visibilty of all the imageview should be set as gone by 
     default in the XML. 
} 

Теперь в oclicklistener обновить значение вашего booelan isButonclicked когда вы щелкните по нему и поместить его в общий прив.

OnClickListener oclFavourite = new OnClickListener() { 
@Override 
public void onClick(View arg0) { 
    if(!isbuttonclicked){ 
     isbuttonclicked=true; 
    }else{ 
     isbuttonclicked=false; 
    } 

     Editor edit = sp.edit(); 
     edit.putBoolean("BUTTON", isButonclicked); 
     edit.commit(); 
    ///////accordingly switch your imageviews.You can have a common method and     
     ////implement that. 

     buttonSwapping(); 
    } 
}; 

Я думаю, что это решит вашу проблему.