首先在 Android 3.0以下使用 Fragment 要导入 android.support.v4 这份包,
例外在低版本中使用 Fragment 时,可能出现很多不好解决的错误。
一个非常可能的错误是:
import 高版本的Fragment包
还import 这个支持库。我想你会出现很多不可思意的错误。
另一个,是你要使用 FragmentManager 就 主Activity 必须继承 FragmentActivity。
我们就先讨论这个,DialogFragment 这个的使用和实现一 Dialog
本实例只为 最简化,清晰的理解 Fragment,固代码精简了很多。
源文件:
1.MainActivity.java
2.MyDialogFragment.java
3.activity_main.xml
1.MainActivity.java
package com.example.diafragment;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.view.Menu;
public class MainActivity extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FragmentManager fm_1 = getSupportFragmentManager();
MyDialogFragment mdf = new MyDialogFragment();
FragmentTransaction ft_1 = fm_1.beginTransaction();
mdf.show(fm_1, "hello");
ft_1.commit();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
return true;
}
}
2.MyDialogFragment.java
package com.example.diafragment;
import android.app.AlertDialog;
import android.app.Dialog;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
public class MyDialogFragment extends DialogFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public Dialog onCreateDialog(Bundle saveInstanceState){
AlertDialog.Builder builder =new AlertDialog.Builder(getActivity());
builder.setTitle("hello");
return builder.create();
}
}
3.activity_main.xml
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id ="@+id/leftView"
android:background="#ff4500">
</FrameLayout>
源码现在地址:fragment.tar.gz