【问题标题】:how to move from one fragment to another fragment on button click如何在按钮单击时从一个片段移动到另一个片段
【发布时间】:2013-12-26 12:05:05
【问题描述】:

我正在为滑动菜单使用 SherlockFragments 库。当我将项目列表作为菜单时 我单击项目片段作为活动打开,但它是一个片段。现在我是片段的新手。我不知道如何从一个片段移动到另一个片段。在活动中,我们打算移动到另一个活动.但是在片段中我不知道如何移动到另一个片段。我在片段A中有一个按钮。当我点击这个按钮时,它会移动到片段B。 通过谷歌搜索,我知道它有不同的周期,但无论如何,当我单击按钮时,我得到了 toast msg 下面是代码

public class Fragment2 extends Fragment {
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.actionnetworklogin, container, false);
        Button login = (Button)view.findViewById(R.id.login);

        login.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Toast.makeText(v.getContext().getApplicationContext(),"login clicked", 5000).show();
            }
        });
        return view;
    }   
}

谁能告诉我如何将一个片段移动到另一个片段?

还有其他方法可以使用活动而不是片段吗?

我已经为所有活动和 java 文件编写了代码,但我不知道滑动菜单有碎片,现在我必须编写所有代码片段。

【问题讨论】:

标签: android android-fragments


【解决方案1】:

很简单只有三行代码...

Fragment fragment = new SalesFragment();

FragmentManager fragmentManager = getFragmentManager();

fragmentManager.beginTransaction().replace(R.id.frame_container, fragment).commit();

【讨论】:

  • 嗨,frame_container 是什么?
【解决方案2】:

这是我用来在视图中切换片段的代码:

FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace([viewId], fragment, tag);
fragmentTransaction.addToBackStack(tag);
fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
fragmentTransaction.commit();

【讨论】:

  • 这里的viewid是什么??我应该写什么来代替它?
  • 我怎样才能得到fragmentid
  • 请告诉我我是 Fragment 的新手
  • 不..它的布局。 R.id.urFrgId。像这样的
  • 视图会保存片段。片段将插入此视图中。阅读documentation
【解决方案3】:

你也可以试试这个:-

public void ButtonClick(View view) {
  Fragment mFragment = new YourNextFragment(); 
 getSupportFragmentManager().beginTransaction()
            .replace(R.id.content_frame, mFragment ).commit();
 }

【讨论】:

    【解决方案4】:
    FragmentManager fragmentManager = getFragmentManager();
                    fragmentManager
                            .beginTransaction()
                            .replace(R.id.frame_container,
                                    new TeacherFragment()).commit();
    

    【讨论】:

    【解决方案5】:
     FragmentTransaction fragmenttransaction = getSupportFragmentManager().beginTransaction();
     FirstFragment regcomplainfragment = new FirstFragment();
     fragmenttransaction.replace(R.id.content_frame,   regcomplainfragment).addToBackStack("tag");
     fragmenttransaction.commit();
    

    【讨论】:

      【解决方案6】:
       //Below is the example 
      
       //In first Fragment 
      
      Fragment fragment = new YourFragmentClassName();
      FragmentManager fragmentManager = getActivity().getSupportFragmentManager();                       android.support.v4.app.FragmentTransaction ft= fragmentManager.beginTransaction();
      ft.replace(R.id.flContent, fragment);
      Bundle args = new Bundle();
      // Pass the values what you want to send to next fragment 
      args.putInt("Year", rYear);
      args.putString("Month", rMonth);
      args.putInt("Industry", rIndustry);
      fragment.setArguments(args);
      ft.commit();
      
      //In Second Fragment
      
      //In onCreateView Method get the values
      
      
      
      int strYear= getArguments().getInt("Year");
      String strMonth = getArguments().getString("Month");
      strIndustry= getArguments().getInt("Industry");
      
      //That's it very simple
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-06
        • 2018-05-17
        • 1970-01-01
        • 1970-01-01
        • 2022-01-20
        相关资源
        最近更新 更多