我有一個FragmentActivity,其中包含四個片段顯示在選項卡布局。這些標籤用於添加或刪除數據庫中的內容,並按以下順序顯示:Artist - Genre - Album - Song。 「唱片」選項卡包含數據庫中所有藝術家和流派的旋鈕,並且這些旋鈕應當更新爲藝術家或流派添加到其各自的選項卡中。這適用於「藝術家」選項卡;但是,當我在流派標籤中添加或刪除某些內容時,除非將選項卡更改爲藝術家,或者轉到單獨的活動並返回,否則更改將不會顯示在相冊中。java - Android的 - 片段不直接相鄰的更新標籤
我不明白的問題是,當我將標籤佈局更改爲Artist - Genre - Song - Album時,一切正常。似乎只有在查看單獨的活動或片段後才更新這些選項卡,然後返回到應發生更改的選項卡。我也知道這不是用於刷新旋鈕的sql或方法的問題,因爲我也嘗試將版式更改爲Genre - Artist - Album - Song。在這種情況下,類型更新已成功反映在「相冊」中,但藝術家中的類別更新並非如此,直到我將兩個標籤從「相冊」移開。
這很難解釋得很清楚,如果需要,我可以發佈我的代碼,但好像這個問題與直接相鄰的標籤之間的導航有關。
我也嘗試在我的流派片段中添加相冊佈局,然後在添加或刪除流派時更新微調器。
這是AddGenreFragment:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
View v = inflater.inflate(R.layout.add_genre_layout, container, false);
addAlbum = inflater.inflate(R.layout.add_album_layout, container, false);
spinGenre = (Spinner) addAlbum.findViewById(R.id.spinGenre);
return v;
}
然後在刪除方法:
// Refresh the spinners in Add Album
ArrayList<String> genreList = dbh.getAllGenres(); // Return all the genres in the database
if (!genreList.isEmpty()) {
// Set the genre drop down box to be populated by all genres in the database
adapterGenre = new ArrayAdapter<String>(addAlbum.getContext(),
android.R.layout.simple_spinner_dropdown_item, genreList);
adapterGenre.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinGenre.setAdapter(adapterGenre);
}
編輯:
我終於想通了這個問題的解決方案絆腳石上之後在另一個問題。它沒有更新和工作正確的原因是因爲我正在使用帶有片段的ViewPager作爲我的選項卡適配器。 ViewPager的默認設置是每次最多加載3個頁面或片段。因此,如果用戶從特定標籤移開3個標籤,那麼原始標籤將被銷燬,並且當原始標籤被重新選擇時將再次調用onCreate。
爲了解決這個問題,我只是簡單地添加此行我的構造函數我TabsAdapter類:
mViewPager.setOffscreenPageLimit(NUMBER_OF_TABS - 1);
這最終確定我遇到的問題,以及一些更是已經來了。
你如何在這些標籤之間切換? – Luksprog
您可以通過滑動切換標籤或單擊操作欄中的標籤。 –