Android学习路-activity活动

发布时间:2017-7-9 7:20:54编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"Android学习路-activity活动 ",主要涉及到Android学习路-activity活动 方面的内容,对于Android学习路-activity活动 感兴趣的同学可以参考一下。

activity即活动,是一种包含用户界面的组件,用于与用户进行交换
 
创建activity类
1.类继承Activity, activity传递一个bundle对象,可以获得onSaveInstanceState(Bundle outstate)保存的Bundle对象
onSaveInstanceState(Bundle outstate)在程序置后台、或跳转到另一个activity,以及被系统回收时都会调用该方法
onSaveInstanceState(Bundle outstate)重写的一个例子如下:
@Overridepublic void onSaveInstanceState(Bundle bundlestatue){    super.onSaveInstanceState(bundlestatue);    Log.i("firstActiviy","正在调用保存bundle的内容");    bundlestatue.putString("testsavainstancestate","testsavainstancestate_value");}
2.重写onCreate方法
3.onCreate方法中为活动设置布局:setContentView(R.layout.layout名);
 
一个创建activity的例子
public class SecondActivity extends Activity{    @Override    public void onCreate(Bundle savedInstanceState){        super.onCreate(savedInstanceState);        setContentView(R.layout.secondlayout);        Log.i("SecondActivity","启动第二个activity");        String activity1=getIntent().getStringExtra("data");        Log.i("SecondActivity","从前一个activity带来的数据:"+activity1);    }
AndroidManifest.xml文件中注册 activity
          1.使用标签<activity></activity>
          2.属性android:name=".xxactivity名字",名字使用.实际是省略了包名,因为<manifest>中已经定义了package名字
          3.指定主活动的activity,即启动app时展示的界面,<activity>中增加下面的内容
<intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter>
                    
注册主activity的例子
<activity android:name=".ActivityTest">    <intent-filter>        <action android:name="android.intent.action.MAIN" />        <category android:name="android.intent.category.LAUNCHER" />    </intent-filter></activity>
 
创建布局layout文件
布局是XML文件,在res->layout目录下,New->Layout resource file
定义id语法(@后加+号表示创建):@+id/id名字
 
然后activity设置布局时可以使用刚创建的布局文件setContentView(R.layout.layout名);
 
 
activity之间交互
一、activity跳转
1.显示调用
Intent intent=new Intent(ActivityTest.this,SecondActivity.class);startActivity(intent);
 
说明:
1.1定义Intent对象,第一个参数为当前的activity,第二个为要跳转到的activity的名字加.class
1.2.startActivity(intent)跳转,传递一个Intent对象
           
 
2.隐式调用
activity在AndoridManifest.xml中的注册指定<intent-filter>的action和category(默认是DEFAULT)
<activity android:name=".SecondActivity"><intent-filter><action android:name="android.intent.action.ACTION_START"></action><category android:name="android.intent.category.DEFAULT"></category></intent-filter></activity>
 
activity中隐式调用方法如下:
Intent intent=new Intent("com.example.sunmin.ACTION_START");startActivity(intent);
               
说明:
2.1.AndoridManifest.xml中注册activity,指明action的android:name。如果需要category也可以加上
2.2.定义Intent对象,传递参数为active注册的android:name
2.3.如果需要过滤Category,可以用下面方法做过滤\nintent.addCategory("com.example.sunmin.TESTcategory");
 
 
 二、activity传递数据到下一个activity
第一步:调用方,在Intent对象中传递数据\nintent.putExtra("key的名字","key的数据");
第二步:被打开的activity,获得调用方传递的数据,getIntent()获得用于启动activity的intent
String data=getIntent().getStringExtra("key的名字");
 
getStringExtra():获得字符串
getIntExtra():获得整型数据         
getBooleanExtra():获得布尔型数据         
       
 
三、返回数据给上一个activity
第一步:第1个activity通过startActivityForResult(intent,1);启用第2个activitystart
ActivityForResult(),第一个入参为启用的activity,第二个为请求的requestCode
 
第二步:第2个activity使用setResult(RESULT_OK, intent);
setResult(),第一个参数为resultCode返回值,第二个参数为传递data的intent
被activitystartActivityForResult()启动的activity销毁finish()时,会回调第一个activity的onActivityResult()方法
 
第三步:第1个activity重写onActivityResult()来处理
因为可能要监测多个activity回调的数据,所以可以使用requestCode来区别不同的activity
销毁activity2时的数据
 
@Overridepublic void onActivityResult(int requestCode,int resultCode,Intent data){    switch (requestCode){        case 1:            if (resultCode==RESULT_OK){                String returndata=data.getStringExtra("data2");                Log.i("activity1","这是我从第二个activity回调的内容:"+returndata);            }


上一篇:Flask刷新问题
下一篇:Using SSH and SFTP in Mac OS X

相关文章

相关评论

本站评论功能暂时取消,后续此功能例行通知。

一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!

二、互相尊重,对自己的言论和行为负责。

好贷网好贷款