我有一个问题,我几个小时都无法弄清楚,
我在活动中有一个片段,有时我用下面的代码调用片段:
newsFeedFragment fragment = new newsFeedFragment();
android.support.v4.app.FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.hide(getSupportFragmentManager().findFragmentById(R.id.fragment_container));
fragmentTransaction.hide(getSupportFragmentManager().findFragmentByTag("notifications_fragment"));
fragmentTransaction.show(getSupportFragmentManager().findFragmentByTag("news_feed_fragment"));
fragmentTransaction.addToBackStack(null);
fragment.onResume();
fragmentTransaction.commit();
由于在显示片段时没有调用onResume,我使用“fragment.onResume();”在下面的代码中。当显示片段时,会调用onResume。但是,我尝试更新onResume方法中的变量,但不会使用下面的代码更新它。当调用onResume时,我在日志中看到“1”作为结果,但我希望它每次都增加1。有没有办法让它发挥作用?
int refreshNotificationVar = 0; //in the main class
@Override
public void onResume(){
super.onResume();
refreshNotificationVar = refreshNotificationVar + 1;
System.out.println(refreshNotificationVar);
}
答案 0 :(得分:1)
在onPause和onResume的情况下,你不能依赖实例变量;你可以在某种程度上依赖静态变量;你可以使用onSaveInstanceState;或使用Singleton类来存储变量值;或存储在共享偏好中;或者根据您的需要存储在数据库中。在您的情况下,我将使用Singleton类来存储值并在onPause / onResume中获取/设置它们。