我正在尝试构建一个测验应用程序,在用户回答问题时保持得分。我还使用Google的ViewPager
屏幕幻灯片,使用Fragments
来保留不同的个人网页(代码:http://developer.android.com/training/animation/screen-slide.html)。我有一个TextView
(@id/txtvw_score
),用于在整个测验会话中保持得分。此txtvw_score
位于fragment_screen_slide_page.xml
。
我遇到的问题是,为了访问所说的TextView
,我必须在ScreenSlidePageFragment
的{{1}}方法中执行此操作。但是,因为Android会针对每个新onCreateView()
调用此onCreateView()
方法两次,所以它会使Fragment
的分数完全过时。例如,第1页将显示当前分数,然后第2页将显示第0页(未初始化的分数),然后第3页将显示第1页的分数等。
我正在使用TextView
来更新实际分数。当我使用SharedPreferences
时,我已经能够完美地记录得分。这仅用于确认目的,因为我实际上并不想使用ActionBar
。
问题的进一步复杂化是我无法在ActionBar
的{{1}}方法中更新TextView。我也尝试调用TextView并将其从Fragment
更改(来源:How to change fragment's textView's text from activity),但无论我做了什么,最终都会以onCreate()
结束。
所以,长话短说,如何在所有ScreenSlideActivity
中保持NullPointerException
的内容一致? (这对我来说非常重要,因为在将来,我想使用TextView
作为计时器的显示,这肯定需要保持一致。)
编辑(添加简化代码):
fragment_screen_slide_page.xml
Fragments
ScreenSlidePageFragment.java
TextView
所有代码都经过简化,以显示问题所针对的问题。所有已删除的代码都已经过测试,直到此时它们才能正常运行。