疯狂android讲义---activity

来源:互联网 发布:dnf异次元碎片 淘宝 编辑:程序博客网 时间:2024/05/07 23:10

android应用的多个activity组成activity

 

4.1.2  配置activity

配置activity时通常指定如下三个属性:
name:指定该activity的实现类的类名

icon:指定该activity对应的图标

label:指定该activity的标签

 

此外,通常还会指定一个或多个<intent-filter…/>元素,该元素用于指定该activity可响应的intent

<?xmlversion="1.0"encoding="utf-8"?>

<manifestxmlns:android="http://schemas.android.com/apk/res/android"

      package="org.crazyit.activity"

      android:versionCode="1"

      android:versionName="1.0">

    <applicationandroid:icon="@drawable/icon"android:label="@string/app_name">

       <activityandroid:name=".OtherActivity"

                android:label="@string/app_name">

           <!--指定该Activity是程序的入口 -->

           <intent-filter>

              <actionandroid:name="android.intent.action.MAIN"/>

              <categoryandroid:name="android.intent.category.LAUNCHER"/>

           </intent-filter>

       </activity>

       <!--定义两个Activity -->

       <activityandroid:name=".ExpandableListActivityTest"

                android:label="查看星际兵种">

       </activity>

       <activityandroid:name=".PreferenceActivityTest"

                android:label="设置程序参数">       

       </activity>

    </application>

</manifest>

 

4.1.3

activity启动其他activity有如下两种方法:

startActivity(Intent intent): 启动其他activity

startActivityForResult(Intent intent,int requestCode):以指定的请求码(requestCode)启动activity,而且程序将会等到新启动的activity的结果(通过重写onActivityResult()方法来获取)

 

android关闭activity有如下两种方法:

finish()  结束当前activity

finishActivity(int requestCode): 结束以startActivityForResult(Intent intent,int requestCode)方法启动的activity

 

 

4.1.4  使用Bundleactivity之间交换数据

Intent提供了多个重载的方法来“携带”数据:

putExtras(Bundle  data):Intent中放入要“携带”的数据

Bundle就是一个简单的数据携带包,该Bundle对象包含了多个方法来存入数据。

putXxx(String  key,Xxx  data):Bundle放入intlong等各种类型的数据。

putSerializable(String eky , Serializable  data):Bundle中放入一个可序化的对象。

取出数据:

getXxx(String  key):

getSerializable(String eky , Serializable  data)

 

Person p = new Person(name.getText().toString()

            , passwd.getText().toString() , gender);

         //创建一个Bundle对象

         Bundle data = new Bundle();

         data.putSerializable("person", p);

         //创建一个Intent

         Intent intent = new Intent(BundleTest.this

            , ResultActivity.class);

         intent.putExtras(data);

         //启动intent对应的Activity

         startActivity(intent);

 

publicclass PersonimplementsSerializable

{

 

 

//获取启动该ResultIntent

     Intent intent = getIntent();

     //获取该intent所携带的数据

     Bundle data = intent.getExtras();

     //Bundle数据包中取出数据

     Person p = (Person)data.getSerializable("person");

     name.setText("您的用户名为:" + p.getName());

     passwd.setText("您的密码为:" + p.getPass());

     gender.setText("您的性别为:" + p.getGender());

 

 

 

 

 

 

 

4.1.5  启动其他activity并返回结果

startActivityForResult(Intent intent , int requestCode)

返回时自动回调onActivityResult(int requestCode , int resultCode,Intent data)

//创建需要对应于目标ActivityIntent

         Intent intent = new Intent(ActivityForResult.this

           , SelectCityActivity.class);

         //启动指定Activity并等待返回的结果,其中0是请求码,用于标识该请求

         startActivityForResult(intent , 0);

 

 

publicvoid onActivityResult(int requestCode , int resultCode

     , Intent intent)

  {

     //requestCoderesultCode同时为0,也就是处理特定的结果

     if (requestCode == 0

       && resultCode == 0)

     {

       //取出Intent里的Extras数据

       Bundle data = intent.getExtras();

       //取出Bundle中的数据

       String resultCity = data.getString("city");

       //修改city文本框的内容

       city.setText(resultCity);

     }

  }

 

 

//获取启动该Activity之前的Activity对应的Intent

         Intent intent = getIntent();

         Bundle data = new Bundle();

       data.putString("city" ,cities[groupPosition][childPosition]);

         intent.putExtras(data);

         //设置该SelectActivity的结果码,并设置结束之后退回的Activity

         SelectCityActivity.this.setResult(0 , intent);

         //结束SelectCityActivity

         SelectCityActivity.this.finish();

         returnfalse;

 

对于一个具有通用性质的程序架构来说,程序架构完成整个应用的通用功能,流程,但在某个特定的点上,需要一段业务相关的代码通用的程序架构无法实现这段代码,那么程序架构会在这个点上留一个“空”。

对于java程序来说,程序架构在某点溜的“空”,可以有如下形式存在。

1,    以接口形式存在:该接口由开发者实现,实现该接口时将会实现该接口的方法,那么通用的程序架构就会回调该方法来完成业务相关的处理。

2,   以抽象方法(也可以是非抽象方法)形式存在:这就是activity的实现形式。这些特定的点上方法已经被定义了,如onCreat,onActivityResult等方法,开发者可以选择重写这些方法,通用的程序架构就会回调该方法来完成业务相关的处理。

 

原创粉丝点击