Top*_*Cat 13 android android-fragments android-activity
我有一个包含多个片段的活动.Activity最初有片段,里面有两个按钮.单击此按钮后,我必须用新片段替换片段.每个片段都有各种小部件,并将当前片段替换为各种事件.
这是我的问题.我怎样才能做到这一点.
建议我的想法.
Ahm*_*aza 18
你可以用FragmentTransaction替换片段.
干得好.
建立一个界面.
public interface FragmentChangeListener
{
public void replaceFragment(Fragment fragment);
}
Run Code Online (Sandbox Code Playgroud)
使用此接口实现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();
}
}
Run Code Online (Sandbox Code Playgroud)
像这样从片段中调用此方法.
//在你的片段中
public void showOtherFragment()
{
Fragment fr=new NewDisplayingFragment();
FragmentChangeListener fc=(FragmentChangeListener)getActivity();
fc.replaceFragment(fr);
}
Run Code Online (Sandbox Code Playgroud)
希望这会奏效!
注意:mContainerId是持有片段内部的视图的id.你也应该重写Fragment的onString()方法.
小智 6
好吧,即使我正在学习android...
我最近解决了同样的问题,“如何在按钮的点击事件上更改片段”。
buttonName.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FragmentTransaction fragmentTransaction = getActivity()
.getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.frame1, new Homefragment());
fragmentTransaction.commit();
}
});
Run Code Online (Sandbox Code Playgroud)
这frame1是FrameLayout在我的 DrawerLayer 的 XML 中定义的id 。
所以现在每当我想要片段交易时,我都会使用此代码。每次它都会替换frame1你最后一个片段的状态。
FragmentTransaction fragmentTransaction = getActivity()
.getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.frame1, new newfragment());
fragmentTransaction.commit()
Run Code Online (Sandbox Code Playgroud)
希望这会有所帮助..
| 归档时间: |
|
| 查看次数: |
34968 次 |
| 最近记录: |