Fragment初识之静态显示

本文介绍了Fragment的基础使用,包括如何创建一个继承自自定义Fragment的类,设置最小SDK版本为11以支持3.0以上版本。在onCreateView方法中通过手工创建或XML布局加载UI,并讲解了如何在Fragment中添加事件处理。特别提示,使用时注意导入当前包下的Fragment类,避免使用自动导入导致错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Fragment初识之静态显示

1.创建一个工程,新建一个包专门存放Fragment,在包下新建一个类,继承至本包下的Fragment。

2.由于是继承至本包下的Fragment,所以会报错,在AndroidMenifest.xml中将最小sdk版本改为11即可(即支持3.0以上版本)。

3.重写onCreateView方法,为Fragment创建UI有两种方法,先说第一种手工创建,适合较简单的UI布局。

package com.example.fragment;

import android.app.Fragment;
import android.graphics.Color;
import android.os.Bundle;
import android.util.TypedValue;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

//创建时继承fragment  选择当前包,不选V4包   出错时在menifest.xml文件中
//将最小sdk改为11  即3.0以上版本
public class hello_Fragment extends Fragment {
	// 重写onCreateView方法
	/**
	 * LayoutInflater 布局资源加载器 ViewGroup 当前Fragment所在的父容器对象 Bundle 存放保存的业务数据
	 * 数据在onSaveInstanceSatate()中保存
	 */

	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		// 为Fragment创建UI控件
		// 第一种方式:通过布局加载器加载布局文件(推荐);第二:手工创建
		// fragment.getActivity()方法返回显示当前Fragment的对象
		// Fragment必须在Activity中显示,所在的Activity又称为归属Activity
		// 下边是手工创建
		TextView tv = new TextView(getActivity());// 获取Fragment的归属Activity
		tv.setText("Hello  Fragment");
		tv.setTextSize(30);
		tv.setTextColor(Color.BLUE);

		// 获取类型数值对象,将普通的对象转换为与密度有关的dp单位值
		int padding = (int) TypedValue.applyDimension(
				TypedValue.COMPLEX_UNIT_DIP, 10, getResources()
						.getDisplayMetrics());
		// getResources().getDisplayMetrics()获取当前屏幕测量对象(高度,宽度,密度....)
		tv.setPadding(padding, padding, padding, padding);

		return tv;

	}
}
接下来需要在主布局中写fragment
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <!-- 1.以静态方式显示 <fragment>标签    并且必须指定id或tag属性来标识碎片的唯一性     通过android:name  来指定显示的Fragment类 -->

    <fragment
        android:id="@+id/fragment1"
        android:name="com.example.fragment.editFragment"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</RelativeLayout>
这里的name即为自己定义的Fragment类,不可选错。

无误后即可运行。

第二种是在xml文件中写布局,然后加载到Fragment中:

package com.example.fragment;

import com.example.android_fragment01.R;

import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;

public class editFragment extends Fragment {

	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		View view = inflater.inflate(R.layout.fragment_edit, null);
		final EditText name = (EditText) view.findViewById(R.id.name);
		view.findViewById(R.id.button1).setOnClickListener(
				new View.OnClickListener() {

					@Override
					public void onClick(View v) {
						// TODO Auto-generated method stub
						getActivity().setTitle(name.getText());
					}
				});
		;

		return view;
	}

}
布局文件如下:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <EditText
        android:id="@+id/name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="请输入用户名"
        android:inputType="text" />

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/name"
        android:layout_marginRight="20dp"
        android:layout_marginTop="42dp"
        android:text="Button" />

</RelativeLayout>
这里注意Fragment对应的xml文件命名一fragment开头。

如果需要添加事件,可以再fragment类中添加,也可以在Activity中添加,重要的是找到相应的组件,也是难点。



特别提醒:由于本例是继承至当前包的fragment,所以任何地方需要导入时都是当前包,不可用Ctrl+Shift+O快捷导入,会出错(亲测会出错!!!!!)。







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值