2014-04-17 60 views
1

所以我有MAIN ACTIVITY(M),兩個FRAGMENTS(F1, F2)BUTTON(B)F1沒有發現id,同時調用子片段

現在,當主要活動啓動F1被自動加載這是很好的,我想要做的就是開始F2當我點擊B這是對F1

以下是我的片段1代碼,HomeFragment:

package info.androidhive.slidingmenu; 

import java.lang.reflect.Field; 

import android.app.Fragment; 
import android.app.FragmentManager; 
import android.app.FragmentTransaction; 
import android.os.Bundle; 
import android.support.v4.view.ViewPager; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.view.ViewGroup; 
import android.widget.ImageButton; 

public class HomeFragment extends Fragment { 

public static HomeFragment newInstance() 
{ 
     return new HomeFragment(); 
    } 

public HomeFragment(){} 

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


    View rootView = inflater.inflate(R.layout.fragment_home, container, false); 

    ImageButton ib = (ImageButton) rootView.findViewById(R.id.buttonEnq); 
    ib.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      InfoFragment infoFragment = new InfoFragment(); 
      /*FragmentManager fm = getFragmentManager(); 
      fm.beginTransaction().replace(R.id.frame_container, infoFragment).commit(); 
      */ 

      FragmentTransaction ft = getChildFragmentManager().beginTransaction(); 
      ft.setCustomAnimations(R.anim.abc_slide_out_bottom, 0); 
      ft.replace(R.id.frame_container,infoFragment); 
      ft.commit(); 
     } 
    }); 

    ViewPager viewPager = (ViewPager)rootView.findViewById(R.id.myfivepanelpager); 
    ImageAdapter adapter1 = new ImageAdapter(this.getActivity()); 
    viewPager.setAdapter(adapter1); 

    return rootView; 

    } 

@Override 
public void onDetach(){ 
    super.onDetach(); 

    try{ 

     Field childFragmentManager = Fragment.class.getDeclaredField("mChildFragmentManager"); 
     childFragmentManager.setAccessible(true); 
     childFragmentManager.set(this,null); 

    }catch(NoSuchFieldException e){ 
     throw new RuntimeException(e); 
    }catch (IllegalAccessException e) { 
     throw new RuntimeException(e); 
    } 
    } 
} 

frame_containermain_activity.xml容器的名稱。我曾嘗試以下職位:

你能告訴我什麼,我做錯了什麼?

+0

發佈您的fragment_home佈局和主要活動代碼 – Libin

回答

3

問題是你試圖將Fragment B添加爲Fragment A一個孩子片段R.id.frame_container,我懷疑frame_container不在片段佈局(R.layout.fragment_home)的圖。

你總是可以使用getChildFragmentManager()添加一個子片段,但它需要一個容器來容納片段。

在你的情況,我看不出有任何需要添加片段B作爲一個孩子的片段A的

您需要更換片段A使用活動段管理附加在活動與片段B

Button的onClick()

FragmentTransaction ft = getChildFragmentManager().beginTransaction(); 

更改行作爲

FragmentTransaction ft = getActivity().getFragmentManager().beginTransaction(); 
+0

謝謝...我會試一試....但如果我可以調用一個孩子片段,它會很好..你可以給我一個例子或教程鏈接爲了那個原因.... –

相關問題