一直就想写写博客。把最近学到的新东西记录一下,方便以后的翻阅。IT技术的发展真的是日新月异,一些新的技术出来之后,一般要过很久才能在市面上买到相关的中文书籍。对于Android这样的移动平台来说,发展的速度更是相当迅速。现在市面能买到Android3.0以上的开发书籍真的很少。其实这完全没有必要的,只要你有良好的Java基础。学习Android开发,直接去看官方文档就OK了。那里才是最权威了。
从Android3.0开始,引用了Fragment这样一个新的东西,先来看下Fragment的定义:
A Fragment
represents a behavior or a portion of user interface in an Activity
. You can combine multiple fragments in a single activity to build a multi-pane UI and reuse a fragment in multiple activities. You can think of a fragment as a modular section of an activity, which has its own lifecycle, receives its own input events, and which you can add or remove while the activity is running (sort of like a "sub activity" that you can reuse in different activities).
其实说白了,就是Activity的一个子集。Fragment也有自己的生命周期,比Activity多出好几个。Fragment也可以使用layout.xml的文件来创建一个界面,但是不同于Activity,Fragment是通过在onCreateView中加载布局文件。
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.histories_list_layout, container,false); }
其中第二个参数container是指的父类视图,第三个参数是一个boolean值,它是值是否将其插入到父类界面中,该值一般为false,因为系统在inflate的时候,已经将它插入到了父类界面中,如果为true的话。它会重复插入父类界面。
在Fragment中也可以和Activity组建交互,例如获得一个Button,则可以通过findViewById()获得,不过要注意的是,必须通过getActivity()方法先获得该Fragment所在的Activity,而且必须在onActivityCreated()周期才能这样做。因为Fragment是先于Activity被创建的。如果在Fragment的onCreate()周期就去试图获取Activity组件的话,那样必定会报NullException。
public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); editText = (EditText)getActivity().findViewById(R.id.edit); listView = (ListView)getActivity().findViewById(R.id.histories_list); }
要在Activity中创建一个Fragment可以有两种方法,第一种是,在Activity的layout.xml布局文件中创建
<fragment class="com.wayne.searcher.SearchBar" android:id="@+id/search_bar" android:layout_width="match_parent" android:layout_height="wrap_content"/>
其中class必须指定到所要创建的Fragment类.当Activity加载其布局文件时,就是根据这个class自动生成这个类的时候,其实这种方式就像Spring里面的bean一样。第二种方式是在Activity中,通过FragmentManager管理一个Fragment。
HistoriesList historiesList = new HistoriesList(); FragmentTransaction t = getFragmentManager().beginTransaction(); t.add(R.id.contianer, historiesList); t.commit();
R.id.contianer是Activity的layout.xml文件的 <FrameLayout android:id="@+id/contianer"/>值。意思是将该Fragment加到container的位置。使用FragmentManager可以动态添加替换或者删除一个Fragment,从而实现 dynamic and flexible UI design。我觉得这一点更新是相当强大和实用的。可以使APP更加丰富。
t.replace(R.id.fragment_container, newFragment); t.addToBackStack(null); //将替换的Fragment放入一个栈中,按下返回键可以返回到之前的Fragment t.commit();
ActionBar也是在Android3.0中新引入的。实用ActionBar很简单,只要在Activity中加载其布局文件就可以
public boolean onCreateOptionsMenu(Menu menu) { // 在这里加载布局文件 getMenuInflater().inflate(R.menu.activity_main, menu); return true; } public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.menu_settings: Intent intent = new Intent(this, Settings.class); startActivity(intent); return true; default: return super.onOptionsItemSelected(item); } }
<!--R.menu.activity_main布局文件,放在menu目录下--> <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/menu_settings" android:title="@string/menu_settings" android:icon="@drawable/ic_menu_preferences" android:showAsAction="ifRoom"/> <!--如果有空间就显示--> <item android:id="@+id/menu_about" android:title="@string/menu_about" android:showAsAction="ifRoom|withText"/> </menu>
ActionBar actionBar = getActionBar(); actionBar.setDisplayHomeAsUpEnabled(true); //返回导航
//ActionBar点击触发事件 public boolean onOptionsItemSelected(MenuItem item) { switch(item.getItemId()) { case android.R.id.home: //当点击的是返回导航键时 Intent intent = new Intent(this, Main.class); intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); startActivity(intent); this.finish(); return true; default: return super.onOptionsItemSelected(item); } } }
相关推荐
在Android应用开发中,ActionBar和Fragment是两个非常重要的组件,它们极大地增强了应用的用户体验和功能。本篇文章将深入探讨如何将这两个元素结合使用,以实现类似GroupActivity或TabHost的导航效果。 首先,我们...
Fragment和ActionBar都是Android3.0之后出现的,Fragment,碎片,主要是为了支持更多的UI设计在大屏幕设备上,如平板。因为现在设备的屏幕越来越大,使用Fragment可以更灵活的管理视图层次的变化。像Activity一样,...
总的来说,`ActionBar`与`Fragment`的结合使用,能够使Android应用的界面更加丰富和互动,同时提高代码的复用性。通过熟练掌握这两者,开发者可以构建出更适应多屏幕设备且易于维护的应用程序。
在Android应用开发中,`ActionBar`是Android ...理解并熟练运用`ActionBar`和`Fragment`切换是构建高效、可维护的Android应用的关键技能之一。通过这种方式,开发者可以创建出具有清晰导航结构的应用,提升用户体验。
以上就是使用`Android Fragment`和`ActionBar`实现tab标签切换页面的基本流程和关键知识点。开发者可以根据实际需求对这一过程进行扩展和定制,例如添加动画效果、自定义tab样式等。在实践中,你还可以使用`...
在Android应用开发中,`ViewPager`、`Fragment`和`ActionBar`是三个非常重要的组件,它们共同构建了丰富多样的用户界面和交互体验。在这个"ViewPager+Fragment+ActionBar Demo"中,开发者将学习如何有效地结合这三个...
在Android应用开发中,`ActionBar`和`Fragment`是两个非常关键的组件,尤其是在3.0及以上版本。它们为开发者提供了更加丰富和灵活的界面设计能力。本实例将深入探讨这两个组件的使用方法以及如何结合它们来提升用户...
在Android应用开发中,`ViewPager`、`...以上就是关于`Fragment ViewPager`、`actionBar`和`FragmentPagerAdapter`的知识点详解,通过熟练掌握这些组件的使用,可以有效地提升Android应用的用户体验和开发效率。
我们将通过一个实际的示例项目,展示如何使用 ViewPager 和 Fragment 实现动态加载 Fragment,并获取 Fragment 的实例。 首先,让我们来看一下 Activity 的布局文件。我们在布局文件中添加了一个 ViewPager,用于...
本教程将深入探讨如何在Android应用中使用Fragment,以及如何进行嵌套使用,特别是在创建底部菜单和顶部菜单的场景下,类似微信和QQ的分页菜单设计。 1. **Fragment的基本使用**: - 创建Fragment:通过继承...
前面的文章Android开发教程之Fragment定义、创建与使用方法详细讲述了Fragment的基本概念与用法。这里再来分析一下Fragment监听返回键事件的具体应用。 背景 项目要求用户注册成功后进入修改个人资料的页面,且不...
androidx-fragment-1.1.0.aar
例如,我们可以使用`add()`和`hide()`方法来添加新的Fragment并隐藏当前Fragment,或者使用`replace()`方法来替换当前显示的Fragment。 使用`add()`和`hide()`的例子如下: ```java FragmentManager manager = ...
Android Fragment的使用。 功能:用一个Activity来管理两个Fragment,并且在其中一个Fragment中,点击按钮,影响到第二个Fragment。Activity中用list来管理Fragment。fragment布局采用垂直排列。
Fragment 和Viewpager,ActionBar运用
这里的`android:name`属性指定Fragment的全限定类名,`android:id`为Fragment分配一个ID,`android:layout_width`和`android:layout_height`定义Fragment占据的空间大小。 **Fragment的生命周期** 静态加载的...
在Android应用开发中,"Actionbar+动态fragment导航栏"是一个常见的设计模式,它结合了UI元素和数据的动态更新,以提供用户...通过实践这样的项目,开发者可以深入理解Android UI组件的使用和数据驱动的界面更新策略。
在Android应用开发中,Fragment是Android SDK中的一个重要组件,它被设计用来支持多屏幕适配和复杂的用户界面设计。...掌握Fragment的使用和最佳实践,对于提升Android应用的用户体验和可维护性至关重要。
在Android应用开发中,Activity和Fragment是两个核心组件。Activity作为应用程序的主要入口点,而Fragment则作为可重用的UI块,可以在多个Activity之间切换或组合。然而,在使用Fragment时,有时会出现一个问题:当...
Fragment的概念是从Android3.0开始引入的,直译为碎片、片段,目的是为不同屏幕大小的设备(手机、平板等)创建灵活动态的UI。诚如其名,你可以把Fragment当作是Activity的模块化组件,它拥有自己的生命周期和UI,接受...