我在我的全局变量中声明一个名为Controller
的全局变量有点问题,这个全局变量是从应用程序扩展而来的。ApplicationContext与全局变量在按下后丢失
当我开始活动AI有Controller
(它是一个购物车)0项的ArrayList,我继续活动B,点击,我添加一个项目“控制器”,我回去(后退按钮)上活动A和我得到一个数组列表仍然在0项目有什么不对?
我的控制器类:
public class Controller extends Application {
public static final int SIGNUP_REQUEST = 98; // The request code
public static final int SIGNIN_REQUEST = 99;
private User mUser;// Instance de l'utilisateur connecté
private Cart mCart = new Cart(); // Panier
private Tracker mTracker; // Analytics
private Session mSession;
private SessionModule mSessionModule;
@Override
public void onCreate() {
super.onCreate();
}
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
mSessionModule = new SessionModule(base);
mSession = mSessionModule.getSession();
}
public Cart getCart() {
return mCart;
}
public Session getSession() {
return mSession;
}
public User getUser() {
return mUser;
}
public void setUser(User mUser) {
this.mUser = mUser;
}
}
我的购物车类:
public class Cart {
private ArrayList<Item> items i= new ArrayList<Item>();
private Store mStore;
public Item getItem(int pPosition) {
return items.get(pPosition);
}
public void addItem(Item item) {
items.add(item);
}
public void removeItem(int pPosition) {
items.remove(pPosition);
}
public void clear() {
items.clear();
}
public int size() {
return items.size();
}
public ArrayList<Item> getItems() {
return items;
}
}
一个BaseActivity其获得的onCreate控制器的实例():
public abstract class BaseActivity extends AppCompatActivity {
public Session mSession;
public Controller mController;
public static final int SIGNUP_REQUEST = 98; // The request code
public static final int SIGNIN_REQUEST = 99;
public static final int LOGIN_REQUEST = 1; // The request code
public static final int REGISTER_REQUEST = 2; // The request code
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mController=(Controller)getApplicationContext();
mSession=mController.getSession();
}
在我MainActivity extends BaseActivity (Activity A)
叫在onResume()
中,我有一种刷新UI徽章的方法:
public void checkCartItems(){
if(itemCart!=null){
LayerDrawable iconCart = (LayerDrawable) itemCart.getIcon();
int nb_items=mController.getCart().size();
Tools.setBadgeCount(this, iconCart,String.valueOf(nb_items));
}
}
在活动B延伸BaseActivity上的OnClick()我所说的简单的添加:
mController.getCart().addItem(mItem);
试过,但问题仍然存在:活动A 0项,活动B 1项活动的C 1项(后退键到活动A)0项目 – WhatsUp
有没有在任何地方,你试图从任何'活动'刷新数据?如果是的话,它是否会回到“活动A”? –
没关系! :)我忘了修改其他活动!谢谢你,我今天学习了一件新事物^^ – WhatsUp