在写碎片使用方法时无法继承fragment怎么办,继承总是出错。
1个回答
展开全部
应该是你的写法错了。
fragment的使用和注意事项
1、使用支持库
如果您的应用需要运行在3.0及以上的版本,可以忽略这部分内容。
如果您的应用使用在3.0以下、1.6及以上的版本,需要使用支持库来构建。
使用支持库的步骤:使用SDK下的SDK Manager工具下载Android Support Package
2. 在您的Android工程的顶级目录下创建一个libs目录
3. 找到您的SDK下的/extras/android/support/v4/android-support-v4.jar,并且拷贝到您的项目的libs下,选中这个jar包 → 右键 → Build Path → Add to Build Path
4.在您的项目的Manifest.xml文件的标签下添加:
<</span>uses-sdkandroid:minSdkVersion="4"
android:targetSdkVersion="8"/>
其中targetSdkVersion是您的软件最小支持的版本
5.如果您的项目支持3.0以下的版本,请导入如下的包:android.support.v4.*;在使用Fragment的Activity请继承FragmentActivity而不是Activity。如果您的系统是3.0或以上版本,同样需要导入类似的包,但是可以使用普通的Activity。
6.在3.0以上也是可以继承于FragmentActivity的,但是需要有以下的几点注意,如果我们是继承于FragmentActivity的话,我们使用的是android.v4.Fragment,我们在制作自己的Fragment的时候,我们要注意不要继承于andrid.app.Fragment,如果继承于app.Fragment,那么就会在FragmentManager.add的时候出现类型转换错误,这一点千万要注意。
Fragment其实非常类似于一个内嵌于Activity的Activity,只不这它叫Fragment而已,它有属于自己的生命周期方法,但注意它也多了几个需要去实现的方法,如View onCreateView方法,它是操作系统向Fragment请求UI的一个方法,我们需要实现并且返回我们需要让它展现的一些内容,在我们继承的Fragment中,我们可以加上一些网络操作等操作,同时也是一个为主UI减负的一个非常好的方法。
让我们来看下代码中的一些操作:
fragment2=new SecondFragment();//我们自己实现有自己逻辑的Fragment
//getSupportFragmentManager().beginTransaction().remove(fragment1).commit();//移除
//getSupportFragmentManager().beginTransaction().replace(R.id.frag_container, fragment2).commit();//替换
getSupportFragmentManager().beginTransaction().addToBackStack("1");
getSupportFragmentManager().beginTransaction().add(R.id.frag_container, fragment2).commit();
注意点:我们可以注意地看到我们写的上面的代码的几点需要注意的地方:
1. 不管是增,删,改。。我们都需要使用getSupportFragmentManager().beginTransaction(),并且在这些操作之后需要commit();否则就不会有效。
2. addToBackStack里面的参数可以为我们的栈起一个别名,但是使用null也可以,需要注意的是我们必须把它放在add前面,如果放在了add后面,程序就会报错(坚决不能把操作放在addToBackStack的后面)。
7.在我们的主Activity中添加Fragment,我们需要注意的是我们需要在我们的布局中添加一个Container,这样的话我们的Fragment才能有地方可放。
如下:
android:id="@+id/frag_container"
android:layout_width="200dip"
android:layout_height="200dip" />
我们需要在Activity的布局中保留一个Fragment让我们去放我们的Fragment,看上面的id为frag_container,那么我们在添加的时候就用
beginTransaction().add(R.id.frag_container,fragment2).commit();
fragment的使用和注意事项
1、使用支持库
如果您的应用需要运行在3.0及以上的版本,可以忽略这部分内容。
如果您的应用使用在3.0以下、1.6及以上的版本,需要使用支持库来构建。
使用支持库的步骤:使用SDK下的SDK Manager工具下载Android Support Package
2. 在您的Android工程的顶级目录下创建一个libs目录
3. 找到您的SDK下的/extras/android/support/v4/android-support-v4.jar,并且拷贝到您的项目的libs下,选中这个jar包 → 右键 → Build Path → Add to Build Path
4.在您的项目的Manifest.xml文件的标签下添加:
<</span>uses-sdkandroid:minSdkVersion="4"
android:targetSdkVersion="8"/>
其中targetSdkVersion是您的软件最小支持的版本
5.如果您的项目支持3.0以下的版本,请导入如下的包:android.support.v4.*;在使用Fragment的Activity请继承FragmentActivity而不是Activity。如果您的系统是3.0或以上版本,同样需要导入类似的包,但是可以使用普通的Activity。
6.在3.0以上也是可以继承于FragmentActivity的,但是需要有以下的几点注意,如果我们是继承于FragmentActivity的话,我们使用的是android.v4.Fragment,我们在制作自己的Fragment的时候,我们要注意不要继承于andrid.app.Fragment,如果继承于app.Fragment,那么就会在FragmentManager.add的时候出现类型转换错误,这一点千万要注意。
Fragment其实非常类似于一个内嵌于Activity的Activity,只不这它叫Fragment而已,它有属于自己的生命周期方法,但注意它也多了几个需要去实现的方法,如View onCreateView方法,它是操作系统向Fragment请求UI的一个方法,我们需要实现并且返回我们需要让它展现的一些内容,在我们继承的Fragment中,我们可以加上一些网络操作等操作,同时也是一个为主UI减负的一个非常好的方法。
让我们来看下代码中的一些操作:
fragment2=new SecondFragment();//我们自己实现有自己逻辑的Fragment
//getSupportFragmentManager().beginTransaction().remove(fragment1).commit();//移除
//getSupportFragmentManager().beginTransaction().replace(R.id.frag_container, fragment2).commit();//替换
getSupportFragmentManager().beginTransaction().addToBackStack("1");
getSupportFragmentManager().beginTransaction().add(R.id.frag_container, fragment2).commit();
注意点:我们可以注意地看到我们写的上面的代码的几点需要注意的地方:
1. 不管是增,删,改。。我们都需要使用getSupportFragmentManager().beginTransaction(),并且在这些操作之后需要commit();否则就不会有效。
2. addToBackStack里面的参数可以为我们的栈起一个别名,但是使用null也可以,需要注意的是我们必须把它放在add前面,如果放在了add后面,程序就会报错(坚决不能把操作放在addToBackStack的后面)。
7.在我们的主Activity中添加Fragment,我们需要注意的是我们需要在我们的布局中添加一个Container,这样的话我们的Fragment才能有地方可放。
如下:
android:id="@+id/frag_container"
android:layout_width="200dip"
android:layout_height="200dip" />
我们需要在Activity的布局中保留一个Fragment让我们去放我们的Fragment,看上面的id为frag_container,那么我们在添加的时候就用
beginTransaction().add(R.id.frag_container,fragment2).commit();
追问
哦,谢谢,我试试吧
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询