创建片段后如何更改片段布局

时间:2018-11-16 22:58:26

标签: java android android-layout android-fragments

我正在开发游戏。游戏中有一张积分表。每个游戏都有七个等级。我想将点位表当前级别移到下一级别。由于该点表具有默认布局,因此每次创建游戏片段都会以其默认布局加载点表。

//GameFragment

public class GameFragment extends BaseFragment {


private PointTable mPointTable;
public FrameLayout frameLayout2,frameLayout3,frameLayout4;


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
Bundle savedInstanceState)
{
    container.removeAllViews();
    ViewGroup view =(ViewGroup) 
inflater.inflate(R.layout.game_fragment,container,false);
    view.setClipChildren(false);

mPointTable=PointTable.fromXml(getActivity().getApplicationContext(),view);
    frameLayout3=view.findViewById(R.id.point_container);
    frameLayout3.addView(mPointTable);

    return  view;
    }

//

//Point Table Layout

<?xml version="1.0" encoding="utf-8"?>
<com.test.PointTable
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:point="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#dced1e79"
tools:context=".MainActivity">
<FrameLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <com.test.PointTable
        android:id="@+id/point_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#dced1e79"
        point:above_point_color="@android:color/white"
        point:blow_point_color="@android:color/white"
         />
</FrameLayout>
</com.test.PointTable>

//

//Nextsection event

    @Override
    public void onEvent(NextSectionEvent event){
    PopupManager.closePopup();
    int difficulty=mPlayingGame.boardConfiguration.diffuculty;
    int remainPoint=mPlayingGame.gameState.remainedMoney;
    if (remainPoint>0 && difficulty<8) {
        difficulty++;
        Common.eventBus.notify(new StartEvent(difficulty, remainPoint));
        mBtnFirst = true;
    }

//

//StartEvent event

@Override
public void onEvent(StartEvent event)
{

    mPlayingGame=new Game();
    mPlayingGame.boardConfiguration= new BoardConfiguration(event.difficulty);
    remainPoint=event.remainPoint;
    arrangeBoard(remainPoint);

    mScreenController.openScreen(new GameFragment());


}

开始游戏 enter image description here

第一节末

enter image description here

第二部分

enter image description here

尽管我将每个游戏参数分配给下一节比赛,每个下一节比赛都会重置积分表。实际上它需要参数,但是片段的第一个视图带有默认的点表布局。

感谢您的帮助,包括方法上的改变。

1 个答案:

答案 0 :(得分:0)

您需要为框架布局提供ID,并在下一个fragmemt上采用另一种框架布局,并通过此代码将您的第一个布局替换为第二个布局

Student_Attandance_Fragment student_attandance_fragment = new Student_Attandance_Fragment();

FragmentTransaction fragmentTransaction = getActivity()。getSupportFragmentManager()。beginTransaction();

fragmentTransaction.replace(R.id.container_Student_home_id,student_attandance_fragment).addToBackStack(“”)。commit();