Activity间传递数据、生命周期和事件Activity间传递数据打开一个activity关闭之后,返回数据 Activity1:
public void open(View v){ Intent intent = newIntent(this,OtherActivity.class); //requestCode :请求码(区分请求的来源) startActivityForResult(intent, 100); } protected void onActivityResult(intrequestCode, int resultCode, Intent data) { //TODO Auto-generated method stub super.onActivityResult(requestCode,resultCode, data); if(requestCode== 100 && resultCode == 200 && data != null){ String info =data.getStringExtra("info"); et_info.setText(info); }
Activity2:
public void close(View v){ String info =et_info.getText().toString(); Intent data = new Intent(); data.putExtra("info", info); //resultCode 结果码(区分返回的结果) setResult(200, data);
//关闭Activity finish(); } Activity生命周期1 完整生命周期 onCreate() --> onStart() --> onResume() 可以在手机上看见activity ---> onPause() --> onStop() 看不见了 ---> onDestory() 销毁了
2 前台生命周期 onstart() ---> onStop()之间进行切换 onCreate() --> onStart() --> onResume() 现在有一个activity完全覆盖 onPause() ----> onStop() 如果上面的activity关闭 onRestart() ---> onStart() --> onResume()
3 可视生命周期 onResume() ---> onPause()之间进行切换 onCreate() --> onStart() --> onResume() 现在有一个activity没有完全覆盖 onPause() 如果上面的activity关闭 onResume() 临时数据 临时数据:应用程序出现异常。我们需要保存的数据。 //保存临时数据 @Override protected void onSaveInstanceState(Bundle outState) { // TODO Auto-generated method stub super.onSaveInstanceState(outState); outState.putInt("page", 88); }
//用来恢复数据 @Override protected void onRestoreInstanceState(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onRestoreInstanceState(savedInstanceState); int page = savedInstanceState.getInt("page"); Log.i("i","page:"+page); } 横竖屏问题 ctrl+ F12 可以让模拟器横竖屏切换 竖屏---》横屏 先杀死一个Activity,再创建一个Activity 横屏---》竖屏 先杀死一个Activity,再创建一个Activity, 再杀死一个Activity,再创建一个Activity 由于:android的键盘导致 如果要变成一样: <activity android:label="@string/app_name" android:name=".MainActivity" android:configChanges="keyboardHidden"> 此时会创建一个Activity实例 我不想创建。 <activity android:label="@string/app_name" android:name=".MainActivity" android:configChanges="keyboardHidden|orientation"> 此时不会创建实例 我想横屏和竖屏显示不一样。 //当切屏幕的时候触发 // TODO Auto-generated method stub super.onConfigurationChanged(newConfig); int orientation = newConfig.orientation; //竖屏 if(orientation ==Configuration.ORIENTATION_PORTRAIT){ setContentView(R.layout.main);// 切换视图 }else{ setContentView(R.layout.other); } } 事件//触摸事件 onTouchEvent()
//键盘按下 onKeyDown()
//键盘弹起 onKeyUp()
//键盘长按 onKeyLongPresss()
//键盘重复点击 onKeyMultiple() activity返回时,如何返回数据? Activity1: 1startActivityForResult(intent) // 请求 3onActivityResult() // 回调拿到反馈数据 Activity2: 2setResult()//反馈 activity生命周期有哪些状态,有哪些方法? onCreate(); onStart();------------- onResume(); onPause(); onStop(); ---------onReStart(); onDestroy(); 异常情况下保存临时数据的方法? onSaveInstanceState(); // 保存数据 onRestoreInstanceState(); // 读取数据 常用事件有哪些? onKeyUp(); onKeyDown(); onKeyLongPress(); onKeyMultiple(); onTouchEvent(); |
Activity间传递数据、生命周期和事件
最新推荐文章于 2021-01-17 21:12:49 发布