单击按钮,从一个片段导航到另一个片段

时间:2016-05-23 04:41:50

标签: android android-fragments

这是通过谷歌搜索和阅读另一个堆栈溢出答案实现的代码II。但任何答案都不适合我。

以下代码出现此错误 - "找不到ID为0x7f09009e的视图

请帮我实现这个

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

//////more code here //////

OnClickListener listner = new OnClickListener() {

            @Override
            public void onClick(View v) {
                Fragment fragment=null;
                if(v==rootView.findViewById(R.id.Button)){
                    fragment = new SortListFragment();
                }
                FragmentManager manager =getFragmentManager();
                FragmentTransaction transaction = manager.beginTransaction();
                transaction.replace(R.id.fragment_sort, fragment);
                transaction.commit();


            }
        };

         ImageButton btn = (ImageButton)rootView.findViewById(R.id.button);
         btn.setOnClickListener(listner);

        return rootView;
    }

3 个答案:

答案 0 :(得分:1)

ButtonOnClickInterface interface;
public void onCreateView(//parameters){
   View view=//inflate the view;
   Button button =(Button)view.findViewById(R.id.buttonId);
   button.setOnClickListener(new View.OnclickListener{
       @Override
       public void onClick(View v){
           try{
              interface.onClick();
           }catch(Throwable e){
              //may be null
           }
       }
   });
}

@Override
public void onAttach(Context c){
   super.onAttach(c);
   try{
      interface=(ButtonOnClickInterface)c;
   }catch(Throwable e){
      //not implemented
   }
}

和您的界面

interface ButtonOnClickInteface{
   void onClick();
}

在您的活动中实施此界面。

答案 1 :(得分:0)

在点击列表器上添加以上行:

rootview = inflater.inflate(R.layout.<your layout xml>, container,
                    false);

答案 2 :(得分:0)

我认为你忘了提供布局文件,你已经把按钮和所有。

请在“ super.OnCreateView()”之后在代码中提供以下行

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

然后检查它是否正常工作,希望这会起作用