网站建设玖金手指谷哥十,深圳市龙岗区住房和建设局网站,企业seo职位,一个企业网站ppt怎么做如果你希望应用根据不同的环境有不同的外观和行为#xff0c;这种情况下就需要片段#xff0c;片段是可以由不同活动重用的模块化代码组件。 片段#xff08;Fragment#xff09;是活动#xff08;Activity#xff09;的一种模块化部分#xff0c;表示活动中的行为或界面…如果你希望应用根据不同的环境有不同的外观和行为这种情况下就需要片段片段是可以由不同活动重用的模块化代码组件。 片段Fragment是活动Activity的一种模块化部分表示活动中的行为或界面的一部分。它们可以在一个活动中组合多个片段从而构建多窗格界面并在多个活动中重复使用某个片段。片段具有自己的生命周期能接收自己的输入事件并且可以在活动运行过程中添加或移除片段。片段必须始终托管在活动之中其生命周期直接受宿主活动生命周期的影响。例如当活动暂停时该活动中所有的片段也会暂停当活动被销毁时所有片段也会被销毁。 片段支持重用代码 片段就像可重用的组件或子活动。片段用来控制屏幕的一部分可以在不同屏幕间重用。这说明可以为训练项目列表创建一个片段另外创建一个片段显示一个训练项目的详细信息。然后在布局间共享这些片段。 片段也有布局 与活动一样片段也有一个关联的布局。如果精心设计可以使用Java代码完全控制界面如果片段代码包含控制布局所需的全部内容将大大增加在应用中重用这个片段的机会。 下面来构建一个Workout应用来应用片段 1、启动应用时它会启动活动MainActivity。 MainActivity活动使用布局activity_main.xml并包含一个名为WorkoutListFragment的片段。 2、WorkoutListFragment显示一个训练项目列表 3、用户单击一个训练项目时DetailActivity启动。 DetailActivity使用activity_detail.xml作为它的布局并包含一个名为WorkoutDetailFragment的片段。 4、WorkoutDetailFragment使用fragment_workout_detail.xml作为它的布局。 它会显示用户选择的训练项目的详细信息。 5、WorkoutListFragment和WorkoutDetailFragement从Workout.java得到它们的训练项目数据。 Workout.java包含一个Workout数组。
一、创建工程 创建如下AS工程 除了主活动和主布局还应创建DetailActivity和activity_detail.xml。 二、为MainActivity的布局增加一个按钮 在activity_main.xml中使用如下代码替换原有代码
?xml version1.0 encodingutf-8?
LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:toolshttp://schemas.android.com/toolsandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:padding16dpandroid:orientationverticaltools:context.MainActivityButtonandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:onClickonShowDetailsandroid:textstring/details_button//LinearLayout上面的代码增加了一个按钮单击这个按钮会调用MainActivity中的onShowDetails()方法该方法稍后编辑。还需要在string.xml中增加以下字符串 string namedetails_buttonShow details/string在MainActivity中添加onShowDetails方法
package com.hfad.workout;import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;public class MainActivity extends AppCompatActivity {Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}public void onShowDetails(View view){Intent intent new Intent(this, DetailActivity.class);startActivity(intent);}
}三、向工程添加片段 如图所示在com.hfad.workout包中新建一个WorkoutDetailFragment片段将WorkoutDetailFragment.java代码替换如下片段代码和活动代码很类似。
package com.hfad.workout;import android.os.Bundle;
import androidx.fragment.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;public class WorkoutDetailFragment extends Fragment {Override//Android需要这个片段的布局时会调用这个方法public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {// 这会告诉Android这个片段使用哪个布局return inflater.inflate(R.layout.fragment_workout_detail, container, false);}
}四、片段布局 同样的片段布局代码看上去与活动布局代码也很类似。更新fragment_workout_detail.xml如下
?xml version1.0 encodingutf-8?
LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:orientationverticalTextViewandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:textAppearance?android:attr/textAppearanceLargeandroid:textstring/workout_titleandroid:idid/textTitle /TextViewandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:textstring/workout_descriptionandroid:idid/textDescription //LinearLayout同样的在string.xml增加如下两个字段 string nameworkout_titleTitle/stringstring nameworkout_descriptionDescription/string五、向活动布局增加片段 现在需要向活动中添加片段使这个片段在活动的布局中显现出来。为此需要在DetailActivity的布局增加一个 fragment 。替换activity_detail.xml代码如下
?xml version1.0 encodingutf-8?
LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:orientationverticalandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentfragmentandroid:namecom.hfad.workout.WorkoutDetailFragmentandroid:layout_widthmatch_parentandroid:layout_heightmatch_parent//LinearLayout如果活动的布局代码中只包含一个片段则可以将上述代码直接简化为一个根元素为fragment的布局。简化为如下代码
?xml version1.0 encodingutf-8?
fragment xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:namecom.hfad.workout.WorkoutDetailFragmentandroid:layout_widthmatch_parentandroid:layout_heightmatch_parent/fragment需要注意的是支持库片段需要扩展了FragmentActivity的活动但是AppCompatActivity是FragmentActivity的一个子类所以扩展了AppCompatActivity类就不会有什么问题下面是DetailActivity.java的代码。
package com.hfad.workout;import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;public class DetailActivity extends AppCompatActivity {Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_detail);}
}到这里可以告一段落了试着运行一下应用了。