2014-04-17 28 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

谢谢...我会试一试....但如果我可以调用一个孩子片段,它会很好..你可以给我一个例子或教程链接为了那个原因.... –

相关问题