我有活动流程 活动1->活动2->活动3
如果用户在活动3中执行某些操作,则共享首选项布尔变量“已执行”存储为true。现在,如果用户按下后退按钮加载活动2,它不会(我使用finish())并加载活动1.这很好,并根据需要。
我现在想要的是,当活动1以这种方式重新启动时,基于共享首选项的值布尔变量“已执行”值为true,应隐藏Activity中的按钮。
我正在使用,
if (preferences.getBoolean("performed",false)){
button.setVisibility(View.Gone);
}
我已在活动1的onRestart方法中编写此代码。
我错过了什么?
该按钮不会隐藏。
答案 0 :(得分:-1)
我是按照以下方式完成的 - 写了一个singalton类有变量IsVisited。 - 检查是否在onResume()方法中访问了它 - 如果访问,则设置按钮消失的可见性
主要活动
Controller c;
Button bu ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bu = (Button)findViewById(R.id.button1);
c = Controller.getController();
bu.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
c.setIsVisited(true);
Intent i = new Intent(MainActivity.this, mainactivity2.class);
startActivity(i);
}
});
}
protected void onResume() {
super.onResume();
if(c.getIsVisited())
{
bu.setVisibility(View.GONE);
}
另一项活动
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.main2);
Controller c = Controller.getController();
Button b = (Button)findViewById(R.id.button1);
b.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
}
控制器类(Singleton类)
public class Controller {
private static final Controller controller = new Controller();
private Boolean isVisited = false;
private Controller()
{
}
public static Controller getController()
{
return controller;
}
public Boolean getIsVisited() {
return isVisited;
}
public void setIsVisited(Boolean isVisited) {
this.isVisited = isVisited;
}}
![enter image description here][1]