[英]Android opening a dialogfragment from another fragment throws a casting error
[英]Android: Opening a Fragment from another
我是Android的新手,這是我的第二個應用程序。 我正在創建一個選項卡式活動,其中第一個片段具有創建新任務的形式,第二個片段具有所有已保存任務的列表,第三個片段從第二個列表中選擇時將顯示任務注釋分段。 第三個片段也應該像一個聊天活動,當您鍵入評論並點擊發送按鈕時,它會發布評論。 當我從單獨的Activity
(在下面的鏈接的GitHub分支中的CommentsActivity.java
中實現此聊天活動時,該應用程序將按預期運行。 但是,當我嘗試從第三個Fragment
實現相同的代碼時,出現以下問題:
在TasksFragment.java
CommentsFragment
之前,我必須點擊兩次列表項(在TasksFragment.java
)。
該片段保持空白,不顯示任何細節或注釋。
標題欄被弄亂了。 當它不正確設置標題CommentsFragment
啟動首次。 但是,當我在片段之間滑動時,它隨后變成空白。 有時,它甚至顯示最后打開的片段的標題,而不是當前打開的片段的標題。
您可以在這里找到我的所有代碼: https : //github.com/geekskool/android-teamwork/tree/only_fragments
其他細節:我傳遞的數據TasksFragment
和CommentsFragment
與與主activity--互動片段交互方法AddTask.java
。 這是我所知道的唯一方法。 如果有更好的方法,請告訴我。
我看到了您的分支,並注意到您正在使用ViewPager
並嘗試使用FragmentTransaction
更新ViewPager
的片段。 這不起作用,因為創建ViewPagerAdapter
時已經創建了片段,並且無法通過FragmentTransaction
附加到ViewPager
。
這是我解決的方法。 由於我使用的是ViewPager,因此無法使用FragmentTransaction
進行以下操作:
錯誤的方法:
FragmentManager fm = getSupportFragmentManager();
android.support.v4.app.FragmentTransaction ft = fm.beginTransaction();
CommentsFragment commentsFragment = CommentsFragment.newInstance(mTaskId, mTaskName);
ft.replace(R.id.container, commentsFragment);
ft.addToBackStack(null);
ft.commit();
使用ViewPager,我必須更新填充它的適配器,然后將其設置為正確的片段。 這是我所做的:
正確的路:
在TasksFragment的onListItemClick()中,調用此接口方法onFragmentInteraction。 然后在主要活動AddTask中,如下實現:
@Override
public void onFragmentInteraction(String taskId, String taskName, String assigneeRef) {
CommentsFragment commentsFragment = CommentsFragment.newInstance(taskId, taskName);
mSectionsPagerAdapter.fragmentList.remove(2);
mSectionsPagerAdapter.fragmentList.add(commentsFragment);
mSectionsPagerAdapter.notifyDataSetChanged();
mViewPager.setCurrentItem(2);
}
希望這對您和其他在更新ViewPager中的片段時遇到問題的人有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.