我在這裏是新的。我是法國人,所以也許我的英語不太好,對不起。SharedPreferences保存按鈕變化後,點擊它不可見,讓出現另一個按鈕
我是Android開發的初學者,爲了完成我的學習,我創建了一個應用程序。
我有一個叫做VoeuxActivity.java的活動編號爲1的8個按鈕(和8個TextViews),它們在開始時都是VISIBLE,當用戶點擊其中一個按鈕時,INVISIBLE改變了(用戶看不到按鈕後,點擊它),當我退出應用程序,我再次回到我的應用程序,該按鈕總是隱身的感謝SharedPreferences和這個論壇的成員。但是現在當我點擊名爲「totoB」的按鈕時,它將不可見,而另一個按鈕在名爲PersoActivity.java的另一個活動編號2上變爲可見,因爲第一個活動用於解鎖一些鎖定的字符,當我選擇一個新字符活動1,它將在活動1中不可見,並且將在活動2中可見,以便爲戰鬥選擇2個字符(這就是爲什麼存在布爾名稱「isClicked」),但我嘗試使用SharedPreferences保持按鈕上的按鈕可見第二個活動,但它根本不工作。 如果我退出應用程序並在應用程序中再次返回時解鎖新角色,則新角色解鎖不會保存爲可見狀態,而且他將再次隱藏,但我希望始終可以通過SharedPreferences看到他。我在第一次活動中使用相同的按鈕發佈法庭代碼,然後在第二次活動中發佈法庭代碼(我嘗試與第一次活動做同樣的事情,但我的解決方案無法工作),也許你可以幫我解決我的問題。
的第一個活動的代碼可以工作,並節省changements:
public class VoeuxActivity extends Activity {
Button totoB;
TextView totoTv;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_voeux);
final SharedPreferences prefs = getSharedPreferences("sharedPreferences", Context.MODE_PRIVATE);
totoB = (Button) findViewById(R.id.perso1);
totoTv = (TextView) findViewById(R.id.perso1Text);
totoB.setVisibility(prefs.getBoolean("isTotoBVisible", true) ? View.VISIBLE : View.INVISIBLE);
totoTv.setVisibility(prefs.getBoolean("isTotoTVVisible", true) ? View.VISIBLE : View.INVISIBLE);
totoB.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
prefs.edit().putBoolean("isTotoBVisible", false).apply();
prefs.edit().putBoolean("isTotoTVVisible", false).apply();
totoB.setVisibility(View.INVISIBLE);
totoTv.setVisibility(View.INVISIBLE);
Intent intentToto = new Intent(VoeuxActivity.this, JouerActivity.class);
startActivity(intentToto);
}
});
}
我嘗試做同樣的事情第二個活動,但它不能正常工作這時候,changement不會保存。
公共類PersoActivity延伸活動{
public static Personnage p1, p2;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_perso);
final SharedPreferences prefs = getSharedPreferences("sharedPreferences", Context.MODE_PRIVATE);
final Button totoPersoBtn = (Button) findViewById(R.id.perso1);
final TextView totoPersoTv = (TextView) findViewById(R.id.perso1Text);
totoAdversaireBtn = (Button) findViewById(R.id.adversaire1);
totoAdversaireTv = (TextView) findViewById(R.id.adversaire1Text);
totoPersoBtn.setVisibility(prefs.getBoolean("isTotoPersoBtnInvisible", true) ? View.INVISIBLE : View.VISIBLE);
totoPersoTv.setVisibility(prefs.getBoolean("isTotoPersoTvInvisible", true) ? View.INVISIBLE : View.VISIBLE);
totoAdversaireBtn.setVisibility(prefs.getBoolean( 「isTotoAdversaireBtnInvisible」,真)View.INVISIBLE:View.VISIBLE);
totoAdversaireTv.setVisibility(prefs.getBoolean(「isTotoAdversaireTvInvisible」,true)?View.INVISIBLE:View.VISIBLE);
if(VoeuxActivity.isClicked) {
prefs.edit().putBoolean("isTotoPersoBtnInvisible", false).apply();
prefs.edit().putBoolean("isTotoPersoTvInvisible", false).apply();
prefs.edit().putBoolean("isTotoAdversaireBtnInvisible", false).apply();
prefs.edit().putBoolean("isTotoAdversaireTvInvisible", false).apply();
totoPersoTv.setVisibility(View.VISIBLE);
totoPersoBtn.setVisibility(View.VISIBLE);
totoAdversaireBtn.setVisibility(View.VISIBLE);
totoAdversaireTv.setVisibility(View.VISIBLE);
} else {
totoPersoBtn.setVisibility(View.INVISIBLE);
totoPersoTv.setVisibility(View.INVISIBLE);
totoAdversaireBtn.setVisibility(View.INVISIBLE);
totoAdversaireTv.setVisibility(View.INVISIBLE);
}}}
如何在第二個活動中將Button和TextView的可視變更保存爲不可見? 非常感謝你,如果有人能幫助我,因爲我真的不知道爲什麼它不工作。 Giggs
您是否嘗試過用承諾,而不是適用?由於提交將直接將更改添加到存儲,而不是通過內存中。 – uncannyj
真的嗎?我不知道嗎?我不知道什麼是提交?你的意思是什麼?你可以寫一個例子嗎? –
我嘗試用「commit()」替換「apply()」,但它不能工作,沒有保存 –