[英]Call fragment method from another Fragment
這個主題已經有幾個主題,但不幸的是我無法解決我的問題。
我有2個標簽。 當一個選項卡完成后,我想更新另一個選項卡。
我在第一個FragmentTab中嘗試了以下內容:
@UiThread
void updateGallery() {
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.layout.gallery_layout, new GalleryFragment());
ft.commit();
}
我得到以下異常:
01-04 02:27:51.805: E/AndroidRuntime(28235): java.lang.IllegalArgumentException: No view found for id 0x7f030002 for fragment GalleryFragment{41d7dcf0 #4 id=0x7f030002}
和
@UiThread
void updateGallery() {
// returns null (ById does also return null)
GalleryFragment frg = (GalleryFragment) getFragmentManager().findFragmentByTag("Gallery");
frg.init();
}
我還試圖直接更新必要的數據:
GalleryFragment gf = new GalleryFragment();
gf.setImageUrls(findDocumentListAll());
gf.getDocumentAdapter().notifyDataSetChanged(); // returns nullpointerexception
從我到目前為止讀到的問題可能是我從未在main.xml
(MainActivity.java)中添加<fragment>
,但是將它們添加到我的MainActivity
如下所示:
MainActivity.AddTab(this, this.mTabHost, this.mTabHost.newTabSpec("Gallery").setIndicator("", getResources().getDrawable(R.drawable.gallery)));
MainActivity.AddTab(this, this.mTabHost, this.mTabHost.newTabSpec("Camera").setIndicator("", getResources().getDrawable(R.drawable.camera)));
mTabHost.setOnTabChangedListener(this);
mAdapter = new TabsPagerAdapter(getSupportFragmentManager());
mViewPager.setAdapter(mAdapter);
mViewPager.setOnPageChangeListener(MainActivity.this);
使用我的適配器中的選項卡定義,如:
@Override
public Fragment getItem(int index) {
switch (index) {
case 0:
return new GalleryFragment_();
case 1:
return new CameraFragment_();
// ...
}
我不確定這是否重要,但我總是使用android.support.v4.app.Fragment;
而不是android.app.Fragment;
您必須在活動中添加一個方法:
void updateGallery() {
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction().replace(R.layout.gallery_layout, fragment).commit();
}
在您的片段中,您可以通過以下方式調用活動中的方法:
((ActivityMain) getActivity()).updateGallery();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.