我是新来的 . 我是法国人,所以也许我的英语不是很好,对不起 .
我是Android开发的初学者,我必须创建一个应用程序来完成我的学习 .
我有一个名为VoeuxActivity.java的活动编号,带有8个按钮(和8个TextViews),它们在开始时都是可见的,当用户点击其中一个按钮时由于INVISIBLE而改变(用户点击后无法看到按钮)它),当我退出应用程序并再次回到我的应用程序时,由于SharedPreferences和该论坛的成员,该按钮始终是不可见的 . 但是我想现在当我点击这个名为“totoB”的按钮时,它将是不可见的,另一个按钮在另一个名为PersoActivity.java的活动2上变为可见,因为当我选择一个新角色时,第一个活动用于解锁一些被锁定的角色 . 活动1,它将在活动1中不可见,并将在活动2上可见,以便为战斗选择2个字符(这就是为什么有一个布尔名称“isClicked”)但我尝试使用SharedPreferences保持按钮可见第二项活动,但它根本不起作用 . 当一个新角色解锁后,如果我退出应用程序并再次回到我的应用程序中,新角色解锁不会保存为可见,并且他再次看不见但我希望他总是可以通过SharedPreferences看到 . 我在第一个活动上使用相同的按钮发布了一个法庭代码,然后在第二个活动上发布(我尝试和第一个活动一样,但我的解决方案无效),也许你可以帮我解决我的问题 .
第一个活动的代码可以工作并保存更改:
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);
}
});
}
我尝试为第二个活动做同样的事情,但这次不能工作,更改不会保存 .
公共类PersoActivity扩展Activity {
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”,true)?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的更改从Visible保存到Invisible?非常感谢你,如果有人可以帮助我,因为我真的不知道为什么它根本不起作用 . 吉格斯
1 回答
我做了一个示例应用程序并进行了测试 . 无论您进行哪些活动更改,它都会保存文本视图的最后状态(可见或不可见) . 即使退出并返回应用程序,它也会加载最后一个状态 .
清单文件
Activity1.class
Activity2.class
activity1lay.xml
activity2lay.xml