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); } }