我在操作栏上有一个输入您的详细信息选项作为操作项,我通过扩展以下类设置该选项在所有活动中可见。
public abstract class ActionActivity extends SherlockActivity {
protected boolean mIsEnterDetailsScreen = true;
protected userName = "";
SessionManager session;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
if(mIsEnterDetailsScreen)
{
menu.add("Enter Your Details")
.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
}
else
{
menu.add(userName)
.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
}
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
//This uses the imported MenuItem from ActionBarSherlock
switch(item.getItemId())
{
case 0:
Intent intent = new Intent(ActionActivity.this,EnterDetails.class);
startActivity(intent);
return true;
}
return false;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
session = new SessionManager(getApplicationContext());
sessionCheck(); // This method's body is separated for the easiness and pasted below.
super.onCreate(savedInstanceState);
getSupportActionBar().setHomeButtonEnabled(true);
}
}
因此,通过上面的代码,如果用户输入详细信息,我将其保存在首选项中,同时设置为mIsEnterDetailsScreen = false;
使该选项不可见,并且从他输入的详细信息中获取的用户名将可见。这仅适用于稍后开始的活动。但不是关于以前的活动。所以,我的疑问是如何刷新后台堆栈中的活动。这样即使他按下后退按钮,在他输入详细信息而不是输入您的详细信息选项username
后,即使在以前的活动中也必须显示。
假设如果用户在第 3 次活动上单击“输入您的详细信息”操作项,则更改会反映在后面的活动(4、5、6....)中,但不会反映在第 1 次活动和第 2 次活动中。有什么方法可以刷新活动以使更改持续存在。
这是 ActionActivity 中的 sessionCheck() 方法
public void sessionCheck()
{
if(session.isLoggedIn())
{
mIsEnterDetailsScreen = false;
HashMap<String, String> userHashMap = session.getUserDetails();
// name
String name = userHashMap.get(SessionManager.KEY_USER_NAME);
userName = name;
}
else{
mIsEnterDetailsScreen = true;
}
}