First code book 2章
1.requestWindowFeature(Window.FEATURE_NO_TITLE); 取消标题
public class FirstActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE);//**必须在setcontentview之前** setContentView(R.layout.first_layout);}
2.Manifest application的android:label=”@string/app2_name” 不会改变apk名字,还显示activity下的 android:label=”this is a activity”>
<application android:name=".ApplicationTest" android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app2_name" > <activity android:name="com.example.FirstActivity" android:label="this is a activity"> <!-- 主启动加下面两句 --> <intent-filter > <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> </application>
3.Toast通过静态方法makeText()创建对象
Toast.makeText(MainActivity.this, "you click", Toast.LENGTH_SHORT).show();
4.修改menu
@Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // TODO Auto-generated method stub switch (item.getItemId()) { case R.id.add_item: Toast.makeText(this,"add", Toast.LENGTH_SHORT).show(); break; case R.id.remove_item: Toast.makeText(this,"remove", Toast.LENGTH_SHORT).show(); break; default: } return true; // return super.onOptionsItemSelected(item); }
5.Intent 用法
Intent显式用法
Intent intent=new Intent(MainActivity.this,second_activity.class); startActivity(intent);
Intent 隐式用法1
只有action和categroy都对应上才能启动Intent
每个Intent只能指定一个action,但可以指定多个categroy
主activity
button1.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub Intent intent=new Intent("com.example.activitytest.neirong"); intent.addCategory("com.example.activitytest.ceshi2"); startActivity(intent); } });
Manifest对应自己的activity
<activity android:name=".second_activity" android:label="This is second activity" > <intent-filter > <action android:name="com.example.activitytest.neirong"/> <category android:name="android.intent.category.DEFAULT"/>//主程序不写category,会默认使用DEFAULT <category android:name="com.example.activitytest.ceshi2"/> </intent-filter> </activity>
Intent隐式用法2
调用浏览器打开百度,Intent.ACTION_VIEW常量值为android.intent.action.VIEW
Intent intent=new Intent(Intent.ACTION_VIEW); intent.setData(Uri.parse("http://www.baidu.com"));
调用电话
Intent intent=new Intent(Intent.ACTION_DIAL); intent.setData(Uri.parse("tel:2546"));
若新建一个activity,在manifest配置如下,会实现浏览器和此activity二选一
必须得有
<data这句。
<activity android:name=".thirdactivity" android:label="This is third activity" > <intent-filter > <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.DEFAULT"/> <data android:scheme="http"/> </intent-filter> </activity>
Intent 数据返回给第一个activity
主activity
button1.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { Intent intent=new Intent(MainActivity.this,second_activity.class); startActivityForResult(intent, 1);//请求码是唯一值,这里传入1,一般用于判断是哪个activity返回的数据。使用这个方法会让由它启动的activity销毁前,调用这里的onActivityResult()方法 } }); //重写onActivityresult方法 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub switch(requestCode){ case 1: if(resultCode==RESULT_OK){ String ss=data.getStringExtra("datareturn"); Log.d("first", ss); } break; default: } }
第二个activity
//使用按钮完成数据传递 Button button2=(Button)findViewById(R.id.button2); button2.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub Intent intent=new Intent(); intent.putExtra("datareturn", "fanhuizhi"); setResult(RESULT_OK, intent);//第一个参数用于向上一个activity返回处理结果;第二个参数把intent传递回去 finish();} });} //使用返回键,完成数据传递 @Override public void onBackPressed() { // TODO Auto-generated method stub Intent intent=new Intent(); intent.putExtra("datareturn", "backreturn"); setResult(RESULT_OK, intent); finish(); }
6.onSaveInstanceState()
当系统自动杀死activity,这个方法在活动回收之前调用,用于保存数据,Bundle用于保存数据
重写onSaveInstanceState方法,onCreate调用
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); if (savedInstanceState!=null) { String tempString=savedInstanceState.getString("data_key"); Log.d("TAG", tempString); } @Override protected void onSaveInstanceState(Bundle outState) { // TODO Auto-generated method stub super.onSaveInstanceState(outState); String tempdataString="something you just typed"; outState.putString("data_key", tempdataString); }
7. 活动4种启动模式
(1)standard 默认模式
1onCreate->1onStart->1onResume 点击按钮后->1onPause->2onCreate->2onStart->2onResume->1onStop 点击返回->2onPause->1onRestart->1onStart->1onResume->2onStop->2onDestroy
(2) singleTop 栈顶活动不会重复新建,不处于栈顶新建
manifest 里加android:launchMode=”singleTop”
(3)singleTask 检查栈里有的活动,这个活动其上的活动统统出栈;没有,新建活动
manifest 里加android:launchMode=”singleTask”
(4)singleIstance 独立生成一个栈,在栈顶不会重复
例如:2活动设定为singleIstance,1点击进入2活动,2点击进入3活动,则1,3栈ID相同,区别于2栈ID;点击Back,从3活动返回到1活动,再点Back,从1活动跳转到2活动,再点back退出
8.活动使用技巧
知晓是哪个活动
建立一个继承activity的Father类,其他活动继承Father,Father的onCreate中加入
Log.d("TAG",getClass().getSimpleName())
随时退出所有程序
建立一个Activitycollector活动容器和Father类,其他活动继承Father,想退出程序直接调用.finishall方法即可。
public class Father extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); Log.d("TAG",getClass().getSimpleName()); Activitycollector.addactivity(this);} @Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); Activitycollector.removeActivity(this); } }
活动容器:
public class Activitycollector { 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); } public static void finishall(){ for(Activity activity:activities){ if(!activity.isFinishing()){ activity.finish(); } } } }
列出所需参数,便于其他程序启动自己
自己activity增加static函数,例如thirdactivity需要secon_activity传入2个String
thirdactivity:
public static void actionStart(Context context,String data1,String data2) { Intent intent =new Intent(context, second_activity.class); intent.putExtra("parm1", data1); intent.putExtra("parm2", data2); context.startActivity(intent); }
second_activity不写Intent和startActivity(intent)了,写下面这句
second_activity.actionStart(thirdactivity.this, "nihao1", "nihao2");
- liebiao1
- liebiao2
1.nihao
2.nihao2
xingming | qian |
---|---|
zhangsna | lisi |
- C# 使用Code First迁移更新数据库
- EntityFramework Code First 手写代码实现生成数据库
- 跨平台远程框架Remoting SDK发布v9新版本,增加新的Code First服务器等功能
- Code First CMD命令
- EF框架step by step(3)—Code-First
- EFCode First 导航属性
- EF Code first
- EF Code first 增加字段,增加表
- EF Code First DataAnnotations
- ASP.NET MVC4 新手入门教程特别篇之一----Code First Migrations更新数据库结构(数据迁移)修改Entity FrameWork 数据结构(不删除数据)
- EF Code First 数据迁移命令
- EF Sqlite code first环境搭建
- Lintcode: First Position of Target (Binary Search)
- Contoso 大学 - 使用 EF Code First 创建 MVC 应用
- EntityFramework Reverse POCO Code First 生成器
- EF Code First 学习笔记:表映射
- code first EF mvc 使用
- entityframework Identity codefirst 使用MySql作为数据存储的笔记
- C# 之 EF CodeFirst创建MySQL数据库
- Code First :使用Entity. Framework编程(6) ----转发 收藏