2014-06-29 46 views
0

我有一個片段類 ,我有一個線性佈局可點擊 和一個按鈕可點擊。如何從片段調用兩個不同的片段

所以我想知道,當我點擊的線性佈局應啓動片段1 ,當我點擊按鈕,它應該開始片段2

public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.fragment_home, container, false); 
    LinearLayout l = (LinearLayout) rootView.findViewById(R.id.line1); 
    l.setOnClickListener(this); 

    Button b = (Button) rootView.findViewById(R.id.map_button); 
    b.setOnClickListener(this); 
    return rootView; 
} 

@Override 
public void onClick(View v) { 

    Fragment frag = new Fragment1(); 
    FragmentTransaction ft = getFragmentManager().beginTransaction(); 
    ft.replace(R.id.frame_container, frag); 
    ft.addToBackStack(null); 
    ft.commit(); 

    Fragment frag = new Fragment2(); 
    FragmentTransaction ft = getFragmentManager().beginTransaction(); 
    ft.replace(R.id.frame_container, frag); 
    ft.addToBackStack(null); 
    ft.commit(); 
+0

現在會發生什麼? –

回答

0

添加onClickListener您的按鈕,並嘗試以顯示您的片段被點擊時。

@Override 
public void onClick(View v) { 
    Fragment fragment = new Fragment1(); 
    FragmentTransaction fragmentTr = getFragmentManager().beginTransaction(); 
    fragmentTr .setCustomAnimations(android.R.animator.fade_in, 
    android.R.animator.fade_out); 
    if (fragment.isHidden()) 
     fragmentTr.show(fragment); 
} 

編輯:

你可以點擊一個開關case語句哪種觀點:

@Override 
    public void onClick(View v) { 
     switch(v.getId()) { 
     case R.id.Button: 
      // show fragment x 
     case R.id.LinearLayout: 
      // show fragment y 
     } 
    } 
+0

顯示片段x意味着如何顯示 – Paresh

+0

隨着FragmentTransaction。看看我的回答'if(fragment.isHidden()) fragmentTr.show(fragment);' – unrated

+0

添加swtich case爲我工作感謝:) – Paresh

0

您的onClick方法必須知道被點擊了什麼,當你說setOnClickListener(這個)你請參閱類中的onClick方法。在您的代碼中,用戶單擊整個onClick方法將執行的內容無關緊要。爲了指定要執行的代碼塊,可以使用Switch和case。