Fragment类型的接口具有以下性质:
1、程序运行界面可有由多个Fragment组成;
2、每一个Fragment 都有各自独立的运行状态。
3、在程序运行过程中,Fragment可以动态的加入和移除。
<fragment android:id="@+id/fragGame" android:name="tw.android.GameFragment" android:layout_width="0dp" android:layout_height="fill_parent" android:layout_weight="1" />
<fragment>便签使用注意事项
1、fragment 的开头字母必须小写
2、每一个<fragment>标签的都要设置android:id 的属性
3、<fragment>的name属性必须制定使用Fragment类,其要加上完整的组件路径名称。
一下代码是一个猜拳游戏:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent" android:paddingLeft="100dp" android:paddingRight="100dp" android:paddingTop="50dp" > <fragment android:id="@+id/fragGame" android:name="tw.android.GameFragment" android:layout_width="0dp" android:layout_height="fill_parent" android:layout_weight="1" /> <!-- 在fragment 加外框 使用FrameLayout呀--> <FrameLayout android:layout_weight="1" android:layout_width="0dp" android:layout_height="wrap_content" android:background="?android:attr/detailsElementBackground" > <fragment android:id="@+id/fragGameResult" android:name="tw.android.GameResultFragment" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </FrameLayout> </LinearLayout>
game.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="400dp" android:layout_height="fill_parent" android:layout_gravity="center_horizontal" > <TextView android:id="@+id/txtTitle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/promptTitle" android:textSize="40sp" android:textColor="#FF00FF" android:textStyle="bold" android:layout_centerHorizontal="true" android:paddingLeft="20dp" android:paddingRight="20dp" android:layout_marginTop="20dp" android:layout_marginBottom="20dp" /> <TextView android:id="@+id/txtCom" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/promptComPlay" android:layout_below="@id/txtTitle" android:layout_alignLeft="@id/txtTitle" android:textSize="20sp" android:layout_marginBottom="20dp" /> <TextView android:id="@+id/txtMyPlay" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/promptMyPlay" android:layout_below="@id/txtTitle" android:layout_alignRight="@id/txtTitle" android:textSize="20sp" android:layout_marginBottom="20dp" /> <Button android:id="@+id/btnScissors" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/playScissors" android:layout_below="@id/txtMyPlay" android:layout_alignLeft="@id/txtMyPlay" android:textSize="20sp" android:paddingLeft="15dp" android:paddingRight="15dp" /> <TextView android:id="@+id/txtComPlay" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="" android:layout_below="@id/btnScissors" android:layout_alignLeft="@id/txtCom" android:textSize="30sp" android:textColor="#FF00FF" /> <Button android:id="@+id/btnStone" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/playStone" android:layout_below="@id/btnScissors" android:layout_alignLeft="@id/btnScissors" android:textSize="20sp" android:paddingLeft="15dp" android:paddingRight="15dp" /> <Button android:id="@+id/btnNet" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/playNet" android:layout_below="@id/btnStone" android:layout_alignLeft="@id/btnStone" android:textSize="20sp" android:paddingLeft="25dp" android:paddingRight="25dp" /> <TextView android:id="@+id/txtResult" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/result" android:layout_below="@id/btnNet" android:layout_alignLeft="@id/txtCom" android:textSize="20sp" android:textColor="#0FFFFF" android:layout_marginTop="20dp" /> </RelativeLayout>
game_result.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="400dp" android:layout_height="fill_parent" android:layout_gravity="center_horizontal" > <TextView android:id="@+id/txtTitle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/promptTitle" android:textSize="40sp" android:textColor="#FF00FF" android:textStyle="bold" android:layout_centerHorizontal="true" android:paddingLeft="20dp" android:paddingRight="20dp" android:layout_marginTop="20dp" android:layout_marginBottom="20dp" /> <TextView android:id="@+id/txtCom" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/promptComPlay" android:layout_below="@id/txtTitle" android:layout_alignLeft="@id/txtTitle" android:textSize="20sp" android:layout_marginBottom="20dp" /> <TextView android:id="@+id/txtMyPlay" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/promptMyPlay" android:layout_below="@id/txtTitle" android:layout_alignRight="@id/txtTitle" android:textSize="20sp" android:layout_marginBottom="20dp" /> <Button android:id="@+id/btnScissors" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/playScissors" android:layout_below="@id/txtMyPlay" android:layout_alignLeft="@id/txtMyPlay" android:textSize="20sp" android:paddingLeft="15dp" android:paddingRight="15dp" /> <TextView android:id="@+id/txtComPlay" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="" android:layout_below="@id/btnScissors" android:layout_alignLeft="@id/txtCom" android:textSize="30sp" android:textColor="#FF00FF" /> <Button android:id="@+id/btnStone" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/playStone" android:layout_below="@id/btnScissors" android:layout_alignLeft="@id/btnScissors" android:textSize="20sp" android:paddingLeft="15dp" android:paddingRight="15dp" /> <Button android:id="@+id/btnNet" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/playNet" android:layout_below="@id/btnStone" android:layout_alignLeft="@id/btnStone" android:textSize="20sp" android:paddingLeft="25dp" android:paddingRight="25dp" /> <TextView android:id="@+id/txtResult" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/result" android:layout_below="@id/btnNet" android:layout_alignLeft="@id/txtCom" android:textSize="20sp" android:textColor="#0FFFFF" android:layout_marginTop="20dp" /> </RelativeLayout>
GameFragment.java
package tw.android; import android.app.Fragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; public class GameFragment extends Fragment { private Button mBtnScissors, mBtnStone, mBtnNet; private TextView mTxtComPlay, mTxtResult; private TextView mEdtCountSet, mEdtCountPlayerWin, mEdtCountComWin, mEdtCountDraw; private int miCountSet = 0, miCountPlayerWin = 0, miCountComWin = 0, miCountDraw = 0; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // TODO Auto-generated method stub return inflater.inflate(R.layout.game, container, false); } @Override public void onActivityCreated(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onActivityCreated(savedInstanceState); setupViewComponent(); } private void setupViewComponent() { mTxtComPlay = (TextView)getView().findViewById(R.id.txtComPlay); mTxtResult = (TextView)getView().findViewById(R.id.txtResult); mBtnScissors = (Button)getView().findViewById(R.id.btnScissors); mBtnStone = (Button)getView().findViewById(R.id.btnStone); mBtnNet = (Button)getView().findViewById(R.id.btnNet); mEdtCountSet = (EditText)getActivity().findViewById(R.id.edtCountSet); mEdtCountPlayerWin = (EditText)getActivity().findViewById(R.id.edtCountPlayerWin); mEdtCountComWin = (EditText)getActivity().findViewById(R.id.edtCountComWin); mEdtCountDraw = (EditText)getActivity().findViewById(R.id.edtCountDraw); mBtnScissors.setOnClickListener(btnScissorsLin); mBtnStone.setOnClickListener(btnStoneLin); mBtnNet.setOnClickListener(btnNetLin); } private Button.OnClickListener btnScissorsLin = new Button.OnClickListener() { public void onClick(View v) { // Decide computer play. int iComPlay = (int)(Math.random()*3 + 1); miCountSet++; mEdtCountSet.setText(new Integer(miCountSet).toString()); // 1 - scissors, 2 - stone, 3 - net. if (iComPlay == 1) { mTxtComPlay.setText(R.string.playScissors); mTxtResult.setText(getString(R.string.result) + getString(R.string.playerDraw)); miCountDraw++; mEdtCountDraw.setText(new Integer(miCountDraw).toString()); } else if (iComPlay == 2) { mTxtComPlay.setText(R.string.playStone); mTxtResult.setText(getString(R.string.result) + getString(R.string.playerLose)); miCountComWin++; mEdtCountComWin.setText(new Integer(miCountComWin).toString()); } else { mTxtComPlay.setText(R.string.playNet); mTxtResult.setText(getString(R.string.result) + getString(R.string.playerWin)); miCountPlayerWin++; mEdtCountPlayerWin.setText(new Integer(miCountPlayerWin).toString()); } } }; private Button.OnClickListener btnStoneLin = new Button.OnClickListener() { public void onClick(View v) { int iComPlay = (int)(Math.random()*3 + 1); miCountSet++; mEdtCountSet.setText(new Integer(miCountSet).toString()); // 1 - scissors, 2 - stone, 3 - net. if (iComPlay == 1) { mTxtComPlay.setText(R.string.playScissors); mTxtResult.setText(getString(R.string.result) + getString(R.string.playerWin)); miCountPlayerWin++; mEdtCountPlayerWin.setText(new Integer(miCountPlayerWin).toString()); } else if (iComPlay == 2) { mTxtComPlay.setText(R.string.playStone); mTxtResult.setText(getString(R.string.result) + getString(R.string.playerDraw)); miCountDraw++; mEdtCountDraw.setText(new Integer(miCountDraw).toString()); } else { mTxtComPlay.setText(R.string.playNet); mTxtResult.setText(getString(R.string.result) + getString(R.string.playerLose)); miCountComWin++; mEdtCountComWin.setText(new Integer(miCountComWin).toString()); } } }; private Button.OnClickListener btnNetLin = new Button.OnClickListener() { public void onClick(View v) { int iComPlay = (int)(Math.random()*3 + 1); miCountSet++; mEdtCountSet.setText(new Integer(miCountSet).toString()); // 1 - scissors, 2 - stone, 3 - net. if (iComPlay == 1) { mTxtComPlay.setText(R.string.playScissors); mTxtResult.setText(getString(R.string.result) + getString(R.string.playerLose)); miCountComWin++; mEdtCountComWin.setText(new Integer(miCountComWin).toString()); } else if (iComPlay == 2) { mTxtComPlay.setText(R.string.playStone); mTxtResult.setText(getString(R.string.result) + getString(R.string.playerWin)); miCountPlayerWin++; mEdtCountPlayerWin.setText(new Integer(miCountPlayerWin).toString()); } else { mTxtComPlay.setText(R.string.playNet); mTxtResult.setText(getString(R.string.result) + getString(R.string.playerDraw)); miCountDraw++; mEdtCountDraw.setText(new Integer(miCountDraw).toString()); } } } }
GameReulstFragment.java
package tw.android; import android.app.Fragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; public class GameResultFragment extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // TODO Auto-generated method stub return inflater.inflate(R.layout.game_result, container, false); } }
时间: 2024-11-05 13:40:22