如何用两个按钮将一个片段替换为另一个片段

时间:2018-08-18 14:03:21

标签: java android

enter image description here

我正在打开应用程序,它崩溃了

2 个答案:

答案 0 :(得分:0)

您可以将 FragmentTransaction 写入按钮的 onClick 中。  请遵循以下代码,

public class MainActivity extends AppCompatActivity {
    Button frag1, frag2;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        frag1 = (Button) findViewById(R.id.frag1btn);
        frag2 = (Button) findViewById(R.id.frag2btn);
        frag1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                FragmentTransaction trans = getSupportFragmentManager().beginTransaction();
                trans.replace(R.id.fragment_container, new Fragment1());
                trans.commit();
            }
        });
        frag2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                FragmentTransaction trans = getSupportFragmentManager().beginTransaction();
                trans.replace(R.id.fragment_container, new Fragment2());
                trans.commit();
            }
        });
    }
}

答案 1 :(得分:0)

您可以用FragmentTransaction替换片段。

你在这里。

建立界面。

public interface FragmentChangeListener 
{
public void replaceFragment(Fragment fragment); 
}

通过此界面实现您的Fragment保持活动。

public class HomeScreen extends FragmentActivity implements
    FragmentChangeListener {


     @Override
     public void replaceFragment(Fragment fragment) {
        FragmentManager fragmentManager = getSupportFragmentManager();;     
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
        fragmentTransaction.replace(mContainerId, fragment, fragment.toString());
        fragmentTransaction.addToBackStack(fragment.toString());
        fragmentTransaction.commit();   
}

}

从这样的片段中调用此方法。

//在您的片段中。

public void showOtherFragment()
  {
   Fragment fr=new NewDisplayingFragment();
         FragmentChangeListener fc=(FragmentChangeListener)getActivity();
         fc.replaceFragment(fr);
   }

希望这会起作用!