《Android进阶》之第六篇 Fragment 的使用2
2015-06-20 09:14
399 查看
最近通过学习,对fragment的使用有了新的认识。
一开始接触android的时候,很是受不了这个fragment,总感觉它把一个简单的事情搞复杂啦,所以每次新建工程的时候总是固执的选择empty Activity
但是后来发现这样写出来的代码移植的时候总是要该来该去,现在开始偏爱带fragment的工程向导
向导默认生成一个JAVA文件,和两个布局文件
MainActivity.JAVA
布局文件:activity_main.xml
另外一个布局文件:fragment_main.xml 这个布局文件就可以自己发挥啦
下面演示一个登录注册的功能:
View Code
实现登录注册功能只需要在向导生成的MainActivity里稍加改动就行
其实在学习Android的过程中都可以仿照这种模式,在向导生成代码的基础上,自己创建extends Fragment的类,再建一个该类需要用的布局文件。
这样所有的demo都可以在一个工程下完成啦。
一开始接触android的时候,很是受不了这个fragment,总感觉它把一个简单的事情搞复杂啦,所以每次新建工程的时候总是固执的选择empty Activity
但是后来发现这样写出来的代码移植的时候总是要该来该去,现在开始偏爱带fragment的工程向导
向导默认生成一个JAVA文件,和两个布局文件
MainActivity.JAVA
package com.example.tesf; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); if (savedInstanceState == null) { getFragmentManager().beginTransaction() .add(R.id.container, new PlaceholderFragment()) .commit(); } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } /** * A placeholder fragment containing a simple view. */ public static class PlaceholderFragment extends Fragment { public PlaceholderFragment() { } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_main, container, false); return rootView; } } }
布局文件:activity_main.xml
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/container" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.tesf.MainActivity" tools:ignore="MergeRootFrame" />
另外一个布局文件:fragment_main.xml 这个布局文件就可以自己发挥啦
下面演示一个登录注册的功能:
package com.example.tesf; import android.app.Fragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.ImageButton; import android.widget.TextView; import android.widget.ViewFlipper; public class RegiserLogin extends Fragment{ private ImageButton ib_back; private ImageButton ib_menu; private TextView regster_text;// private TextView ivTitleName; private TextView ivTextViewRigh; private ViewFlipper vf; private Button confirm_button; private Button load_btn; private EditText login_number; private EditText login_passward; private EditText register_number; private EditText register_passward; private EditText register_code; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_main, container, false); initView(rootView); return rootView; } private void initView(View view){ vf = (ViewFlipper) view.findViewById(R.id.mainFlipper); ib_menu = (ImageButton) view.findViewById(R.id.ivTitleBtnLeft2); ib_back = (ImageButton) view.findViewById(R.id.ivTitleBtnLeft1); regster_text = (TextView) view.findViewById(R.id.regster_text); ivTitleName = (TextView) view.findViewById(R.id.ivTitleName); confirm_button = (Button) view.findViewById(R.id.confirm_button); load_btn = (Button) view.findViewById(R.id.loadBtn); login_number = (EditText) view.findViewById(R.id.login_number); login_passward = (EditText) view.findViewById(R.id.login_passward); register_number = (EditText) view.findViewById(R.id.register_number); register_passward = (EditText) view.findViewById(R.id.register_passward); register_code = (EditText) view.findViewById(R.id.register_code); ib_back.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // finish(); } }); regster_text.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { ib_menu.setVisibility(View.VISIBLE); ivTitleName.setText("注册新账号"); vf.showNext(); ib_back.setVisibility(View.GONE); } }); ib_menu.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { ib_back.setVisibility(View.VISIBLE); ivTitleName.setText("登录"); vf.showPrevious(); ib_menu.setVisibility(View.GONE); } }); } }
View Code
实现登录注册功能只需要在向导生成的MainActivity里稍加改动就行
if (savedInstanceState == null) { getFragmentManager().beginTransaction() .add(R.id.container, new RegiserLogin()) .commit(); }
其实在学习Android的过程中都可以仿照这种模式,在向导生成代码的基础上,自己创建extends Fragment的类,再建一个该类需要用的布局文件。
这样所有的demo都可以在一个工程下完成啦。
相关文章推荐
- Android(java)学习笔记113:Android编写代码调用Vibrator震动功能(Bug:按下按钮button始终没有震动)
- Android 将自己的Launcher设置为默认启动
- 初来乍到,求大神轻点,刚自学android,写个打电话和发短信的小DEMO吧
- Android 自定义CheckBox 样式
- android dialog的使用
- Android背景渐变色(shape,gradient)
- android:inputType常用取值
- Android流式布局
- [Android]LayoutInflater的inflate方法半详解
- Android应用开发EditText文本内容变化监听方法
- Android Material Design ToolBar 配置环境问题
- Android常用代码之普通及系统权限静默安装APK
- Android OpenGL学习足迹——一些重要的函数
- android:fitSystemWindows详解
- smali文件语法参考
- Android中继承RadioButton后,点击不能选中
- Android SDK开发包国内下载地址-AndroidDevTools
- Android Intent.FLAG_NEW_TASK详解,包括其他的标记的一些解释
- Android4.4新的特性,在应用内开启透明状态栏和透明虚拟按钮。
- 从应用启动看Activity的创建过程