❶ 安卓开发者请进
首先,你的布局activity_main是怎么写的,有可能是布局的子控件已经占满了LinearLayout,后添加的button就显示不出来(实际上已经加进去了)第二,inflate方法非常不推荐这样使用,第二个参数应该传入父控件,如果不想附到父控件上,可以使用三个参数的方法,第二个参数指定父控件,第三个参数传false,指定不添加到父控件
❷ 做安卓软件开发需要哪些工具
Android以java为编程语言,使接口到功能,都有层出不穷的变化,其中Activity等同于J2ME的MIDlet,一个 Activity 类(class)负责创建视窗(window),一个活动中的Activity就是在 foreground(前景)模式,背景运行的程序叫做Service。两者之间通过由ServiceConnection和AIDL连结,达到复数程序同时运行的效果。如果运行中的 Activity 全部画面被其他 Activity 取代时,该 Activity 便被停止(stopped),甚至被系统清除(kill)。View等同于J2ME的Displayable,程序人员可以通过 View 类与"XML layout"档将UI放置在视窗上,Android 1.5的版本可以利用 View 打造出所谓的 Widgets,其实Widget只是View的一种,所以可以使用xml来设计layout,HTC的Android Hero手机即含有大量的widget。至于ViewGroup 是各种layout 的基础抽象类(abstract class),ViewGroup之内还可以有ViewGroup。View的构造函数不需要在Activity中调用,但是Displayable的是必须的,在Activity 中,要通过findViewById()来从XML 中取得View,Android的View类的显示很大程度上是从XML中读取的。View 与事件(event)息息相关,两者之间通过Listener 结合在一起,每一个View都可以注册一个event listener,例如:当View要处理用户触碰(touch)的事件时,就要向Android框架注册View.OnClickListener。另外还有Image等同于J2ME的BitMap。Android的开发技术:1、Activity生命周期虽然Android中有四大组件,但是不可否认Activity是最常用的。所以熟练掌握Android的生命周期是必须的。其实生命周期就是记住 Activity的那些方法在什么时候被系统调用,这样才可以把对应的逻辑代码写到合适的方法内部去。至于服务和广播组件可以稍微缓一下,到实际使用的时候再学习都可以。2、界面开发技术界面开发是一种基本的技术,几乎所有的程序里面都需要用到。在Android开发中界面开发分为3种:1)使用xml文件布局使用xml首先对于界面进行布局,然后在Activity里面进行引用是最常见的应用软件开发技术,这种方式使用的最大,需要学习的内容也最多。学习时需要熟悉:a)五种Layout布局深刻理解五种布局组织控件的方式是一个基本的基础,这样你才可以在实际的界面中灵活的使用每种布局结构,构造出需要的界面。b)常用控件控件有很多,至少要知道每种控件是做什么的,至于里面的特定参数和方法可以学要的时候再去查c)界面美华系统的控件很多时候无法满足要求,需要通过添加背景更换图片等进行美化,要熟悉每种控件如何去美华。掌握了上面的内容,通过布局的嵌套就可以制作出各种界面,如果在熟悉include的使用就可以减少xml的重复,方便后期的修改和维护了。2)使用代码动态创建有些时候需要动态的创建一些布局和控件,这个就需要使用LayoutInflater去创建一些动态的界面了。3)自己绘制界面游戏中常用,继承SurfaceView自己绘制。3、数据存储技术Android中的数据存储方式有3种:1)SharedPrefereneces存储对于简单的数据可以使用该方式存储,以键值对的方式存储一些基本的数据。2)文件存储将数据以文件的形式存储,可以是手机自身的存储也可以是SD卡,文件的数据格式自己定义。3)SQLite数据库存储使用标准SQL语句进行操作,复杂数据的首选。4、网络编程现在的Android程序不需要联网的已经不多了。所以网络编程也是必须的,一般的公司都会封装有自己的联网结构,但是基本的联网还是要熟悉。1)HTTP联网使用Http联网+Json数据格式是现在很多客户端的首选。2)Socket联网至于蓝牙等连接方式则可以在项目需要的时候学习。对于手机的系统功能,如拨打电话、发送短信、读取系统参数等则可以根据需要在学习,不麻烦的。其次,手机软件相关Android开发不同于普通的电脑软件开发,需要了解手机的操作习惯,知道手机的屏幕不大、内存有限,电池有限等,在实际开发和设计时尽量考虑。
❸ 安卓开发 Fragment
首先 有个xml布局如下:
<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"
tools:context="com.example.fourtothreetest.MainActivity" >
<TextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_alignParentTop="true"
android:background="@color/rednocheck"
android:gravity="center"
android:text="点餐系统"
android:textColor="@color/redcheck"
android:textSize="20sp" />
<RadioGroup
android:id="@+id/rad"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:checkedButton="@+id/fuwugengxin"
android:orientation="horizontal" >
<RadioButton
android:id="@+id/laikedengji"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:layout_weight="1"
android:background="@drawable/redselect"
android:button="@null"
android:gravity="center"
android:onClick="onclick"
android:text="来客登记"
android:textColor="@color/blacklight" />
<RadioButton
android:id="@+id/kaishidiancan"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:layout_weight="1"
android:background="@drawable/redselect"
android:button="@null"
android:gravity="center"
android:onClick="onclick"
android:text="开始点餐"
android:textColor="@color/blacklight" />
<RadioButton
android:id="@+id/yidiancaidan"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:layout_weight="1"
android:background="@drawable/redselect"
android:button="@null"
android:gravity="center"
android:onClick="onclick"
android:text="以点菜单"
android:textColor="@color/blacklight" />
<RadioButton
android:id="@+id/fuwugengxin"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:layout_weight="1"
android:background="@drawable/redselect"
android:button="@null"
android:gravity="center"
android:onClick="onclick"
android:text="服务更新"
android:textColor="@color/blacklight" />
</RadioGroup>
<FrameLayout
android:id="@+id/fmalay"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/rad"
android:layout_below="@+id/title"
android:background="#000000" >
</FrameLayout>
</RelativeLayout>
其次:主activity
packagecom.example.fourtothreetest;importandroid.app.Activity;importandroid.app.Fragment;importandroid.app.FragmentManager;importandroid.app.FragmentTransaction;importandroid.os.Bundle;importandroid.view.Menu;importandroid.view.MenuItem;importandroid.view.View;importandroid.widget.RadioButton;{staticFragmentManagermanger;;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);kaishidian=(RadioButton)findViewById(R.id.kaishidiancan);manger=getFragmentManager();change(newFuWuGengXin());}publicstaticvoidchange(Fragmentfragment){=manger.beginTransaction();fragmentTransaction.replace(R.id.fmalay,fragment);fragmentTransaction.commit();}publicstaticvoidsw(){change(newKaiShiDianCan());kaishidian.setChecked(true);}publicvoidonclick(Viewv){switch(v.getId()){caseR.id.laikedengji:{change(newLaiKeDengJi());}break;caseR.id.kaishidiancan:{change(newKaiShiDianCan());}break;caseR.id.yidiancaidan:{change(newYiDianCaiDan());}break;caseR.id.fuwugengxin:{change(newFuWuGengXin());}break;default:break;}}}最后每个新页面都有一个activity:packagecom.example.fourtothreetest;importjava.util.ArrayList;importandroid.app.Fragment;importandroid.content.SharedPreferences;importandroid.content.SharedPreferences.Editor;importandroid.os.Bundle;importandroid.preference.PreferenceManager;importandroid.view.LayoutInflater;importandroid.view.View;importandroid.view.View.OnClickListener;importandroid.view.ViewGroup;importandroid.widget.ArrayAdapter;importandroid.widget.Button;importandroid.widget.EditText;importandroid.widget.Spinner;{privateViewv;privateSpinnerspr;privateEditTextexpeople,exgonghao;privateButtonbtnstart;privateSharedPreferencespre;Editoreditor;privateString[]items={"1号","2号","3号","4号","5号","6号","7号","8号","9号"};@OverridepublicViewonCreateView(LayoutInflaterinflater,ViewGroupcontainer,BundlesavedInstanceState){v=inflater.inflate(R.layout.tab_laikedengji,null);spr=(Spinner)v.findViewById(R.id.spr);expeople=(EditText)v.findViewById(R.id.expeople);exgonghao=(EditText)v.findViewById(R.id.exgonghao);btnstart=(Button)v.findViewById(R.id.btn_start);btnstart.setOnClickListener(newOnClickListener(){@OverridepublicvoidonClick(Viewv){MainActivity.sw();}});pre=PreferenceManager.getDefaultSharedPreferences(AppOs.appos);editor=pre.edit();ArrayList<String>list=newArrayList<String>();for(inti=0;i<items.length;i++){list.add(items[i]);}ArrayAdapter<String>adapter=newArrayAdapter<String>(getActivity(),android.R.layout.simple_spinner_dropdown_item,list);spr.setAdapter(adapter);if(pre.getInt("first",0)==0){create();}//create();editor.putInt("first",1);editor.commit();returnv;}publicvoidinit(){}/***创建数据库*/publicvoidcreate(){Stringdbstr_cai,dbstr_zhuo,dbstr_yongcan,dbstr_yidian;DbHelperdbHelper;dbstr_cai="createtablecaidan(idvarchar(50),namevarchar(50),pricenumber,imagevarchar(100))";dbstr_zhuo="createtablezhuodan(idvarchar(50),namevarchar(50))";dbstr_yongcan="createtableyongcandan(idvarchar(50),personnumnumber,tidvarchar(50),staffnovarchar(50),pdatetimedatetime)";dbstr_yidian="createtableyidiancaidan(idvarchar(50),oidvarchar(50),fidvarchar(50),numnumber)";dbHelper=newDbHelper();dbHelper.create(dbstr_cai);dbHelper.create(dbstr_zhuo);dbHelper.create(dbstr_yongcan);dbHelper.create(dbstr_yidian);}}然后每个界面都有你需要的布局就行了,这个例子是4个界面跳转的,小编只能帮你到这了
❹ Android安卓viewpager和Fragment的结合,多个Fragment视图之间切换等运用
packagecom.example.myapplication;importandroid.app.Notification;importandroid.app.NotificationManager;importandroid.app.PendingIntent;importandroid.content.Intent;importandroid.content.IntentFilter;importandroid.graphics.BitmapFactory;importandroid.graphics.drawable.ColorDrawable;importandroid.support.v4.app.Fragment;importandroid.support.v4.app.NotificationCompat;importandroid.support.v4.view.ViewPager;importandroid.support.v7.app.AppCompatActivity;importandroid.os.Bundle;importandroid.view.Gravity;importandroid.view.View;importandroid.widget.AbsListView;importandroid.widget.PopupWindow;importandroid.widget.RadioButton;importandroid.widget.RadioGroup;importjava.util.ArrayList;importjava.util.List;.OnPageChangeListener{List<Fragment>list;privateViewPagervp;RadioButton[]rb;RadioButtonrb1;RadioButtonrb2;RadioButtonrb3;RadioGrouprg;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main2);vp=(ViewPager)findViewById(R.id.vp);rg=(RadioGroup)findViewById(R.id.rg);rb1=(RadioButton)findViewById(R.id.rb1);rb2=(RadioButton)findViewById(R.id.rb2);rb3=(RadioButton)findViewById(R.id.rb3);rb=newRadioButton[3];rb[0]=rb1;rb[1]=rb2;rb[2]=rb3;list=newArrayList<>();list.add(newFragment1());list.add(newFragment2());list.add(newFragment3());MyAdapter2adapter2=newMyAdapter2(getSupportFragmentManager(),list);vp.setAdapter(adapter2);vp.addOnPageChangeListener(this);rg.setOnCheckedChangeListener(newRadioGroup.OnCheckedChangeListener(){@OverridepublicvoidonCheckedChanged(RadioGroupgroup,intcheckedId){for(inti=0;i<3;i++){if(rb[i].getId()==checkedId){vp.setCurrentItem(i);break;}}}});}@OverridepublicvoidonPageScrolled(intposition,floatpositionOffset,intpositionOffsetPixels){}@OverridepublicvoidonPageSelected(intposition){rb[position].setChecked(true);}@Override(intstate){}@OverrideprotectedvoidonDestroy(){super.onDestroy();vp.removeOnPageChangeListener(this);}publicvoidclick2(Viewview){Viewinflate=View.inflate(this,R.layout.pop,null);PopupWindowwindow=newPopupWindow(inflate,AbsListView.LayoutParams.MATCH_PARENT,AbsListView.LayoutParams.WRAP_CONTENT);window.setOutsideTouchable(true);window.setBackgroundDrawable(newColorDrawable());window.showAsDropDown(view,0,0);}publicvoidclick3(Viewview){NotificationManagermanager=(NotificationManager)getSystemService(NOTIFICATION_SERVICE);PendingIntentintent=PendingIntent.getActivity(this,11,newIntent(this,Main2Activity.class),PendingIntent.FLAG_ONE_SHOT);NotificationCompat.Builderbuilder=newNotificationCompat.Builder(this);builder.setSmallIcon(R.mipmap.ic_launcher)//设置小图标//.setContentText("要下课了,去哪玩啊")//设置通知的内容,内容靠左.setContentTitle("新消息通知").setContentInfo("要下课了,去哪玩啊")//设置通知的内容,内容靠右.setContentIntent(intent)//设置延迟意图,从通知栏跳到哪.setDefaults(Notification.DEFAULT_ALL)//设置通知的提示方式.setAutoCancel(true)//设置点击自动取消通知;//设置标题manager.notify(1,builder.build());}publicvoidclick4(Viewview){Intentintent=newIntent(this,MyService.class);intent.putExtra("msg","我就是服务,已经开始了");startService(intent);}}****************************************************packagecom.example.myapplication;importandroid.support.v4.app.Fragment;importandroid.support.v4.app.FragmentManager;importandroid.support.v4.app.FragmentStatePagerAdapter;importjava.util.List;/***Createdby猴嫂on2017/11/18.*/{List<Fragment>list;publicMyAdapter2(FragmentManagerfm,List<Fragment>list){super(fm);this.list=list;}@OverridepublicFragmentgetItem(intposition){returnlist.get(position);}@OverridepublicintgetCount(){returnlist.size();}}**********************************************************//packagecom.example.myapplication;importandroid.os.Bundle;importandroid.support.annotation.Nullable;importandroid.support.v4.app.Fragment;importandroid.support.v4.app.FragmentManager;importandroid.support.v4.app.FragmentPagerAdapter;importandroid.support.v4.app.FragmentStatePagerAdapter;importandroid.view.LayoutInflater;importandroid.view.View;importandroid.view.ViewGroup;importjava.util.List;/***Createdby猴嫂on2017/11/18.*/{@Nullable@OverridepublicViewonCreateView(LayoutInflaterinflater,ViewGroupcontainer,BundlesavedInstanceState){Viewinflate=inflater.inflate(R.layout.fra1,null);returninflate;}}//如上可多个***********************//fra1<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@drawable/beijing"><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_horizontal"android:text="第一个"android:id="@+id/button"android:onClick="click2"/></LinearLayout>***************************************************************///pop///////<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:id="@+id/tvpop"android:text="popupwindow"android:layout_width="wrap_content"android:layout_height="wrap_content"/></LinearLayout>*************************************************packagecom.example.myapplication;importandroid.app.Service;importandroid.content.Intent;importandroid.os.IBinder;importandroid.util.Log;/***Createdby猴嫂on2017/11/18.*/{publicMyService(){}inti=0;//开始执行服务内容@OverridepublicintonStartCommand(Intentintent,intflags,intstartId){Stringmsg=intent.getStringExtra("msg");Log.i("onStartCommand","onStartCommand:"+msg);newThread(newRunnable(){@Overridepublicvoidrun(){for(i=0;i<=100;i++){Log.i("onStartCommand","onStartCommand:"+i);try{Thread.sleep(200);}catch(InterruptedExceptione){e.printStackTrace();}}}}).start();returnSTART_STICKY;}@OverridepublicIBinderonBind(Intentintent){//TODO:.("Notyetimplemented");}//销毁服务@OverridepublicvoidonDestroy(){super.onDestroy();i=101;}}
❺ 安卓开发,怎么去捕捉多个不同Layout中的按钮
按钮要放到主Layout里边 然后获取按钮监听 首先你需要掌握ViewPager 其次你在主Activity里边 需要添加你的 三个子Layout
类似这样的layoutInflater=LayoutInflater.from(this);layout1=layoutInflater.inflate(R.layout.layout1,null);layout2=layoutInflater.inflate(R.layout.layout2,null);layout3=layoutInflater.inflate(R.layout.layout3,null);layout4=layoutInflater.inflate(R.layout.layout4,null);layout5=layoutInflater.inflate(R.layout.layout5,null);layouts=newArrayList<View>();layouts.add(layout1);layouts.add(layout2);layouts.add(layout3);layouts.add(layout4);layouts.add(layout5);
然后绑定你的PagerAdapter
最后需要实现监听按钮
{privateintindex=0;publicMyOnClickListener(inti){this.index=i;}@OverridepublicvoidonClick(Viewv){//TODOAuto-generatedmethodstubviewPager1.setCurrentItem(index);}}
类似上边的监听!你应该会吧!就OK了!
❻ 【安卓开发】inflate的小问题
没听说过setLeftView,是自己自定义的吗getLayoutInflater()会返回一个layoutInflater对象getLayoutInflater().inflate(R.layout.main,null) 会得到一个view对象。
❼ 做安卓软件开发需要学习什么技术
Android的开发技术很多,在开始学习的时候不可能一次性全部学会,也没有必要一开始都全部学会,但是有些技术是非常常用的,需要在开始时打好基础,这些技术时:1、Activity生命周期虽然Android中有四大组件,但是不可否认Activity是最常用的。所以熟练掌握Android的生命周期是必须的。其实生命周期就是记住 Activity的那些方法在什么时候被系统调用,这样才可以把对应的逻辑代码写到合适的方法内部去。至于服务和广播组件可以稍微缓一下,到实际使用的时候再学习都可以。2、界面开发技术界面开发是一种基本的技术,几乎所有的程序里面都需要用到。在Android开发中界面开发分为3种:1)使用xml文件布局使用xml首先对于界面进行布局,然后在Activity里面进行引用是最常见的应用软件开发技术,这种方式使用的最大,需要学习的内容也最多。学习时需要熟悉:a)五种Layout布局深刻理解五种布局组织控件的方式是一个基本的基础,这样你才可以在实际的界面中灵活的使用每种布局结构,构造出需要的界面。b)常用控件控件有很多,至少要知道每种控件是做什么的,至于里面的特定参数和方法可以学要的时候再去查c)界面美华系统的控件很多时候无法满足要求,需要通过添加背景更换图片等进行美化,要熟悉每种控件如何去美华。掌握了上面的内容,通过布局的嵌套就可以制作出各种界面,如果在熟悉include的使用就可以减少xml的重复,方便后期的修改和维护了。2)使用代码动态创建有些时候需要动态的创建一些布局和控件,这个就需要使用LayoutInflater去创建一些动态的界面了。3)自己绘制界面游戏中常用,继承SurfaceView自己绘制。3、数据存储技术Android中的数据存储方式有3种:1)SharedPrefereneces存储对于简单的数据可以使用该方式存储,以键值对的方式存储一些基本的数据。2)文件存储将数据以文件的形式存储,可以是手机自身的存储也可以是SD卡,文件的数据格式自己定义。3)SQLite数据库存储使用标准SQL语句进行操作,复杂数据的首选。4、网络编程现在的Android程序不需要联网的已经不多了。所以网络编程也是必须的,一般的公司都会封装有自己的联网结构,但是基本的联网还是要熟悉。1)HTTP联网使用Http联网+Json数据格式是现在很多客户端的首选。2)Socket联网至于蓝牙等连接方式则可以在项目需要的时候学习。对于手机的系统功能,如拨打电话、发送短信、读取系统参数等则可以根据需要在学习,不麻烦的。其次,手机软件相关Android开发不同于普通的电脑软件开发,需要了解手机的操作习惯,知道手机的屏幕不大、内存有限,电池有限等,在实际开发和设计时尽量考虑。
❽ 如何在安卓中自定义adapter来制做listview
在开发中,我们经常使用到ListView这个控件。Android的API也提供了许多创建ListView适配器的快捷方式。例如ArrayAdapter、SimpleAdapter和SimpleCursorAdapter等。但你是否发现,如果采用这些系统自带的适配器,对于事件的响应只能局限在一个行单位。假设一行里面有一个按钮和一个图片控件,它们之间的响应操作是不一样的。若采用系统自带的适配器,就不能精确到每个控件的响应事件。这时,我们一般采取自定义适配器来实现这个比较精确地请求。http://www.cnblogs.com/topcoderliu/archive/2011/05/07/2039862.html详细可以参考这个,有图解教程,希望可以帮到你
❾ 安卓如何获取layout中所有控件
在实际开发中LayoutInflater这个类还是非常有用的,它的作用类似于findViewById()。不同点是LayoutInflater是用来找res/layout/下的xml布局文件代码块,并且实例化;而findViewById()是找xml布局文件下的具体widget控件(如Button、TextView等)。 具体作用: 1、对于一个没有被载入或者想要动态载入的界面,都需要使用LayoutInflater.inflate()来载入; 2、对于一个已经载入的界面,就可以使用Activiyt.findViewById()方法来获得其中的界面元素。 LayoutInflater 是一个抽象类,在文档中如下声明: public abstract class LayoutInflater extends Object 获得 LayoutInflater 实例的三种方式: 1.LayoutInflater inflater = getLayoutInflater(); //调用Activity的getLayoutInflater() 2.LayoutInflater localinflater =(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 1. LayoutInflater inflater = LayoutInflater.from(context); 其实,这三种方式本质是相同的,从源码中可以看出: getLayoutInflater(): Activity 的 getLayoutInflater() 方法是调用 PhoneWindow 的getLayoutInflater()方法,看一下该源代码: public PhoneWindow(Context context) { super(context); mLayoutInflater = LayoutInflater.from(context); } 可以看出它其实是调用 LayoutInflater.from(context)。 LayoutInflater.from(context): public static LayoutInflater from(Context context) { LayoutInflater LayoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); if (LayoutInflater ==null) { throw new AssertionError("LayoutInflater not found."); } return LayoutInflater; } 可以看出它其实调用 context.getSystemService()。 结论:所以这三种方式最终本质是都是调用的Context.getSystemService()。 inflate 方法 通过 sdk 的 api 文档,可以知道该方法有以下几种过载形式,返回值均是 View 对象,如下:public View inflate (int resource, ViewGroup root); 3 public View inflate (XmlPullParser parser, ViewGroup root); 4 public View inflate (XmlPullParser parser, ViewGroup root, boolean attachToRoot); 5 public View inflate (int resource, ViewGroup root, boolean attachToRoot); 6 7 LayoutInflater inflater = (LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE); 8 View view = inflater.inflate(R.layout.custom, (ViewGroup)findViewById(R.id.test)); 9 //EditText editText = (EditText)findViewById(R.id.content);10 // error EditText editText = (EditText)view.findViewById(R.id.content); 对于上面代码,指定了第二个参数 ViewGroup root,当然你也可以设置为 null 值。 注意: ·inflate方法与 findViewById 方法不同; ·inflater 是用来找 res/layout下的 xml 布局文件,并且实例化; ·findViewById() 是找具体 xml 布局文件中的具体 widget 控件(如:Button、TextView 等)。