调用OnResume方法从Activity到Fragment不更新变量

时间:2016-04-13 10:32:32

标签: android-activity fragment onresume

我有一个问题,我几个小时都无法弄清楚,

我在活动中有一个片段,有时我用下面的代码调用片段:

        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);

    }

1 个答案:

答案 0 :(得分:1)

在onPause和onResume的情况下,你不能依赖实例变量;你可以在某种程度上依赖静态变量;你可以使用onSaveInstanceState;或使用Singleton类来存储变量值;或存储在共享偏好中;或者根据您的需要存储在数据库中。在您的情况下,我将使用Singleton类来存储值并在onPause / onResume中获取/设置它们。