java.lang.IllegalArgumentException:在Fragment中找不到id的视图

时间:2014-09-23 09:21:05

标签: android fragment fragment-tab-host

在我的HomeFragment中,我使用Tabhost添加了两个标签。在tabhost中有两个片段。从Tabhost fragment 1我必须转到另一个片段。但是它给出了No view found错误。我无法理解这个问题,请帮我解决这个问题。

下面的代码是我的tabhost fragment 1。从这个片段我必须去另一个片段。

public class TopRatedFragment extends Fragment
{

    String strtext;
       View FaramentView;

    TextView home_item_price;
    TextView home_item_name;
    ImageView home_item_image;
    String itemDescription;
    String itemName;
    String ItemPath;
    String ItemCode;
    double itemPrice;


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

        final View rootView = inflater.inflate(R.layout.fragment_top_rated, null);
        //TextView.class.cast(rootView.findViewById(R.id.labelText)).setText("Earth");

        home_item_name=(TextView)rootView.findViewById(R.id.home_item_name);
        home_item_price=(TextView)rootView.findViewById(R.id.home_item_price);
        home_item_image=(ImageView)rootView.findViewById(R.id.home_item_image);
        home_button_shop_now=(Button)rootView.findViewById(R.id.home_button_shop_now);

        home_button_shop_now.setOnClickListener(new OnClickListener() 
        {

            @Override
            public void onClick(View arg0)
            {               

                 Fragment mFragment = new DetailFragment();
                 mFragment.setArguments(bundle);
                 android.support.v4.app.FragmentTransaction ft = getFragmentManager().beginTransaction();

                 ft.replace(R.id.content_frame, mFragment);
                 ft.addToBackStack(null);
                 ft.commit();   


            }
        });
        return rootView;
    }
}

2 个答案:

答案 0 :(得分:0)

         ft.replace(R.id.content_frame, mFragment);
         ft.addToBackStack(null);
         ft.commit();   

此处没有从父活动调用R.id.content_frame,如果没有尝试更改父活动中的content_frame id,则可能会重复。

答案 1 :(得分:0)

最终我得到了解决方案,简单的改变tabhost setactivity来自

tabHost.setup(getActivity(), getChildFragmentManager(), R.layout.home_fragment);

tabHost.setup(getActivity(), getFragmentManager(), R.layout.home_fragment);