Android中定义BaseActivity


需求:

如果一个应用程序中有许多activity都会用到比如说titlebar,或者footerbar

这种情况下,架构的时候就可以定义一个BaseActivity了

思路是:

通过BaseActivity继承Activity,在layout中为后面要添加的layout预留一个空的layout,具体代码:

  1. public class BaseActivity extends Activity {   
  2.   
  3.     @Override  
  4.     protected void onCreate(Bundle savedInstanceState) {   
  5.         super.onCreate(savedInstanceState);   
  6.         requestWindowFeature(Window.FEATURE_NO_TITLE);   
  7.         setContentView(R.layout.base);   
  8.     }   
  9.   
  10.     public void baseSetContentView(int layoutResId) {   
  11.         LinearLayout llContent = (LinearLayout) findViewById(R.id.content);   
  12.         LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);   
  13.         View v = inflater.inflate(layoutResId, null);   
  14.         llContent.addView(v);   
  15.     }   
  16.   
  17. }  

base布局文件:

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <?xml version="1.0" encoding="utf-8"?>  
  3. <RelativeLayout xmlns:Android="http://schemas.android.com/apk/res/android"  
  4.     android:layout_width="fill_parent"  
  5.     android:layout_height="fill_parent" >  
  6.   
  7.     <LinearLayout  
  8.         android:layout_width="fill_parent"  
  9.         android:layout_height="50dip"  
  10.         android:background="@drawable/titlebar"  
  11.         android:layout_alignParentTop="true"  
  12.         android:orientation="horizontal" >  
  13.   
  14.         <Button  
  15.             android:id="@+id/titlbarback"  
  16.             android:layout_width="wrap_content"  
  17.             android:layout_height="wrap_content"  
  18.             android:text="@string/back"  
  19.             android:textSize="14dip" />  
  20.   
  21.         <TextView  
  22.             android:id="@+id/title"  
  23.             style="@style/titlebarstyle"  
  24.             android:layout_width="wrap_content"  
  25.             android:layout_height="wrap_content"  
  26.             android:text="@string/app_name" />  
  27.   
  28.         <Button  
  29.             android:id="@+id/confirm"  
  30.             android:layout_width="wrap_content"  
  31.             android:layout_height="wrap_content"  
  32.             android:text="@string/confirm"  
  33.             android:textSize="14dip" />  
  34.   
  35.         <Button  
  36.             android:id="@+id/cancel"  
  37.             android:layout_width="wrap_content"  
  38.             android:layout_height="wrap_content"  
  39.             android:text="@string/cancel"  
  40.             android:textSize="14dip" />  
  41.     </LinearLayout>  
  42.   
  43.     <LinearLayout  
  44.         android:layout_width="fill_parent"  
  45.         android:layout_height="match_parent"  
  46.         android:id="@+id/content">  
  47.     </LinearLayout>  
  48.   
  49. </RelativeLayout>  

这样,当BaseActivity的子activity只要调用baseSetContentView这个方法把自己的layout设置一下就可以了。

更多Android相关信息见Android 专题页面 http://www.bkjia.com/topicnews.aspx?tid=11

相关内容