第一行代码笔记
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_OK或RESULT_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 加 Android:launchMode=”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()方法中调用activityCollector的addActivity方法将活动添加到管理器
在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”);