activity 章节

来源:互联网 发布:java和hadoop 编辑:程序博客网 时间:2024/04/18 19:58

第一行代码笔记

         感谢此书的作者  郭霖博主


1.隐藏标题栏

requestWindowFeature(Window.FEATURE_NO_TITLE);

2.MENU

res目录下建立menu文件夹  创建main菜单文件

添加如下代码:

<menu xmlns:android=”http://schemas.android.com/apk/res/android”>

<item

Android :id=”@+id/add_item”

Android:title=”Add”/>

<item

Android :id=”@+id/add_item2”

Android:title=”Add”/>

 

</menu>

在活动中重写 onCreateOptionsMenu()方法

:

Public boolean onCreateOptionsMenu(Menu menu){

getMenuInflater().inflate(R.menu.main,menu);

Return true;

}

 

重写onOptionsItemSelected()方法  定义响应事件

Public boolean onOptionsItemSelected(MenuItem item){

Switch (item.getItemId()){

Case R.id.add_item:

break;

 

default;

}

Return true;

}

3.Intent在活动中跳转

显式:

Intent intent=New Intent( a.this, b.class);

startActivity(intent);

 

隐式:

调用本程序

在配置文件下的某一活动中添加

Action category

<intent-filter>

<action android:name=”com.example.activitytest.ACTION_START”/>

<category android:name=”android.intent.category.DEFAULT”/>//这个是默认的

</intent-filter>

 

在活动中new intent

Intent intent=new intent(“com.example.activitytest.ACTION_START”);

Intent.addCategory(“com.example.activitytest.MY_CATEGORY”);//添加category,记得在清单文件中在添加一个

Startactivity(intent);

 

调用其他程序-调用浏览器

Intent intent =new intent(intent.ACTION_VIEW);//其中的action是系统内置的动作

intent.setData(Uri.parse(“http://www.baidu.com”));

startActivity(intent);

调用拨号界面

Intent intent =new intent(intent.ACTION_DIAL);//其中的action是系统内置的动作

intent.setData(Uri.parse(“tel:10086”));

startActivity(intent);

4.在活动中传递数据

向下传递:重载 intent中的putExtra()方法

String data=”sabfkjassbfjasbkj”;

intent.putExtra(“extra_data,data”);

 

在下个活动中,用getIntent()方法获取,再调用getStringExtra(“extra_data”);

Intent intent=getIntent();

String data=intent.getStringExtra(“extra_data”);

 

向上传递:

1.在上一个活动中   使用startActivityForResult(intent,1)方法来传递数据//1代表请求码

2.在要跳转的活动中  

intent intent=new intent()于传递数据

 intent.putExtra(“键”,”要传的数值”)

调用setResult(“RESULT_OK”,intent);返回数据

//参数一用于向上一个活动返回处理结果,一般只使用 RESULT_OKRESULT_CANCELED两个值,参数二 是把带有数据的intent传递回去

 

按下back键调用这个方法

Public void onBackPressed(){

intent intent=new intent();

intent.putExtra(“键”,”要传的数值”);

setResult(“RESULT_OK”,intent);

finish();

}

3.在上一个活动中,重写onActivityResult()方法

 

Protected void onActivityResult(int requestCode,int resultCode,Intent data){

Switch(requestCode){

case 1:

If(resultCode==RESULT_OK){

String returnedData=data.getStringExtra(“键”);

Log.d(“FirstActivity”,returnedData);

 

}

Break;

Default;

}

}

 

 

 

5.activity 生命周期

解决活动被回收时临时数据得不到保存的问题

protected void onSaveInstanceState(Bundle outState){

super.onSaveInstanceState(outState);

String te=”asfsvdfbdfs ddfdg”;

outState.putString(“data_key”,te);

}

 

修改onCreate()方法 销毁后再展现时添加判断

 

onCreate(Bundle savedInstanceState){

If(savedInstanceState!=null){

String tempData=savedInstanceState.getString(“data_key”);

Log.d(TAG,tempData);

}

}

 

6.活动的启动模式

在配置文件中的activity AndroidlaunchMode=”stabdard”

 

Standard //默认的  处于栈顶 启动一次 创建一次

SingleTop  处于栈顶 启动多次 创建一次

SingleTast  启动时在栈中检查是否存在该活动,存在就直接使用,并且在这个活动中之上的所有活动统统出栈

SingleInstance  用于不同的程序共用一个活动    在启动时会启用一个新的返回栈来管理活动。

 

7.活动实践

1)知晓在哪一个活动

建立baseactivity类  

Log.d(“baseactivity”,getclass().getSimpleName());//获取当前实例的类名

2)随时随地退出程序

新建一个ActivityCollector类作为活动管理器

Public class ActivityCollector{

   //list暂存活动

Public static List<Activity> activities=new ArrayList<Activity>();

//添加活动

Public static void addActivity(Activity activity){

activities.add(activity);

}

//移除活动

Public static void removeActivity(Activity activity){

activities.remove(activity);

}

//list集合中储存的活动统统销毁

Public static void finishAll(){

for(Activity activity:activities){

If(!activity.isFinaishing()){

activity.finish();

}

}

}

}

baseactivity中的oncreate()方法中调用activityCollectoraddActivity方法将活动添加到管理器

onDestroy()方法调用removeActivity()方法 表明将一个马上要销毁的活动从管理器中移除

 

3)启用活动的最佳写法

在活动类中添加 actionStart()方法  完成对intent的构建  需要的数据通过actionStart()方法的参数传递过来,然后存储到intent中,最后调用atartActivity()方法启动该活动类

 

Public static void actionStart(Context context,String data1,String data2){

Intent intent=new intent(context,SecondActivity.class);

intent.putExtra(“param1”,data1);

intent.putExtra(“param2”,data2);

Context.startactivity(intent);

}

点击事件:

SecondActivity.actionstart(firstactivity.this,”data1”,”data2”);

 

 

 

 

0 0