2014-02-09 63 views
0

我有一個具有內部3個片段的視圖尋呼機。
但是,第一個片段有一個列表視圖。
我想打開一個新的片段,當我點擊一個ListView項目。
我能夠使它與此代碼succefully工作:打開片段在另一個片段

Fragment FullBrand = new FullBrand(); 
FragmentTransaction ft = getFragmentManager() 
     .beginTransaction(); 
ft.replace(R.id.framebrands, FullBrand); 
Bundle bundle = new Bundle(); 
FullBrand.setArguments(bundle); 
ft.addToBackStack(null); 
ft.commit(); 

然而,當新片段發佈會,viewpager仍然存在!
怎麼辦?我怎麼能擺脫他們?
謝謝!

回答

1

好像你是要替換的觀點尋呼機內一個片段。

如果你想更換視圖尋呼機片段(與它的3名兒童),並顯示出其他的片段,你需要調用事務的FragmentActivity和當前容器更換。

添加回調活動並更換整個容器的活動時,ListView項點擊。

實施例添加聽者

鑑於尋呼機片段,聲明您的接口:

public interface OnViewPagerClickListener { 
    public void onBlaBla(Object arg); 
} 

在片段的活動:在視圖尋呼機片段倍率

public class MyFragmentActivity implement ViewPagerFragment.OnViewPagerClickListener 

onAttach &申報界面會員

private OnViewPagerClickListener mCallback; 

@Override 
    public void onAttach(Activity activity) { 
     super.onAttach(activity); 
     mCallback =(OnViewPagerClickListener) activity **try catch this code** 
    } 

而且無論你想調用mCallback.onBlaBla(...) 和做其他的活動.... 這是非常總結教訓的接口:)約界面

更多信息和回調here 祝你好運。

+0

是完全相同,這就是我嘗試做。 你能提供有關如何將回調添加到活動的更多細節? – Fringo

+0

看到我的編輯答案 –

+0

嘿我做了你告訴我要做的和它的工作。但是當用戶點擊後退按鈕時遇到問題,它將退出應用程序,而不是將其轉到前一個片段。任何想法? – Fringo

1

你不應該試圖刪除ViewPager,而不是你可以更好的展現在DialogFragment新片段(即FullBrand)。所以如果你點擊返回它會帶給你只老ViewPager,它不會退出應用程序

要顯示一個對話框片段與全屏試試下面的代碼:

public class NewFragment extends DialogFragment { 

private Dialog dialog; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 

    View view = inflater.inflate(R.layout.new_fragment_xml_here, container, 
      false); 

    return view; 
} 

@Override 
public Dialog onCreateDialog(Bundle savedInstanceState) { 

    dialog = new Dialog(getActivity(), 
      android.R.style.Theme_Black_NoTitleBar); 
    dialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE); 

    return dialog; 
    } 
} 

然後調用這個NewFragment從您的ListView項單擊以顯示此爲NewScreen這會看起來像一個新的畫面:

NewFragment fragment = new NewFragment(); 
fragment.show(fragmentManager, "NewFragment"); 

我希望這會幫助你。