Fragment是在Activity的托管下才能具有显示视图的能力;
**fragment_crime.xml**
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<EditText
android:id="@+id/et"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入标题!"
/>
<Button
android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="显示标题"/>
</LinearLayout>
**CrimeFragment.java**
package com.duolyn.test07;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class CrimeFragment extends Fragment{
Button btn;
EditText et;
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
//inflate是在xml中找到布局为R.layout.fragment_crime
View v = inflater.inflate(R.layout.fragment_crime, container, false);
et = (EditText) v.findViewById(R.id.et);
btn = (Button) v.findViewById(R.id.btn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(getActivity(), et.getText().toString(), Toast.LENGTH_SHORT).show();
}
});
return v;
}
}
**activity_crime.xml**
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
//R.id.fragmentContainer是托管Fragment的Activity的id
android:id="@+id/fragmentContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</FrameLayout>
**CrimeActivity.java**
public class CrimeActivity extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_crime);
//以下几行代码是使Fragment在Activity的托管下生效,即Fragment在Activity下显示视图
FragmentManager fm = getSupportFragmentManager();
Fragment fragment = fm.findFragmentById(R.id.fragmentContainer);
if(fragment == null){
fragment = new CrimeFragment();
fm.beginTransaction().add(R.id.fragmentContainer, fragment).commit();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.crime, menu);
return true;
}
}