Intent
2014-03-03 21:30
162 查看
public class MainActivity extends Activity implements OnClickListener { /** * intent在android中的使用 */ private Button button1; private Button button_hidden; private Button button_more1; private Button button_more2; private TextView tv_text; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv_text = (TextView) this.findViewById(R.id.textView1); button1 = (Button) this.findViewById(R.id.button1); button_hidden = (Button) this.findViewById(R.id.button2); button_more1 = (Button) this.findViewById(R.id.button3); button_more2 = (Button) this.findViewById(R.id.button4); button1.setOnClickListener(this); button_hidden.setOnClickListener(this); button_more1.setOnClickListener(this); button_more2.setOnClickListener(this); } /** * Activity本身提供方法,多界面跳转,靠这个方法,才能完成跳转,这个android多界面跳转的模板 * 方法目的就是允许从其余界面返回, * * requestCode参数:这个就是代表标号 * resultCode参数:代表目标Activity是否有数据返回(To1Activity/To2Activity是否有数据返回给MultiActivity) * data参数:获取由To1Activity返回的数据 */ @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch (requestCode) { //从第一个页面返回 case 1: if(resultCode == Activity.RESULT_CANCELED){ tv_text.setText("没有数据返回"); } break; //从第二个页面返回 case 2: /** * 第二个页面的写法: * //携带数据返回开始的Activity * Intent intent = new Intent(); * intent.putExtra("name", "第二个页面返回数据"); * 这种是不带数据返回的setResult(); * ThreeActivity.this.setResult(Activity.RESULT_CANCELED); * * 带数据返回的setresult,刚好包含二个参数,一个代表当前返回ok,一个是返回的intent * * ThreeActivity.this.setResult(Activity.RESULT_OK, intent); * ThreeActivity.this.finish(); * */ //Activity.RESULT_OK代表另一个界面有数据返回 if(resultCode == Activity.RESULT_OK){ String myName = data.getExtras().getString("name"); tv_text.setText(myName); } break; } super.onActivityResult(requestCode, resultCode, data); } @Override public void onClick(View v) { switch (v.getId()) { /** * 最简单的跳转:新建intent对象,设置跳转路径,Activity.satartActivity(intent); * * 启动跳转路径,Context.startActivity */ case R.id.button1: // 一个是启动界面,另外一个是目标界面 Intent intent = new Intent(MainActivity.this, ToActivity.class); MainActivity.this.startActivity(intent); MainActivity.this.finish();// 当用来finish()方法后,Activity就会销毁 break; // ----------------------------------------------------------------------------- /** * Activity的隐式跳转: 隐式跳转的最重要的是配置好清单文件中的参数 * 这个配置只有隐式跳转才需要 * <activity android:name="ToActivity" > * <intent-filter> * <action android:name="com.example.intent.ToActivity" /> * * <category android:name="android.intent.category.DEFAULT" /> * </intent-filter> * </activity> * */ case R.id.button2: Intent intent_hidden = new Intent("com.example.intent.ToActivity"); MainActivity.this.startActivity(intent_hidden); break; case R.id.button3: /** * 多个Activity之间跳转 * 以前只有一个单个的界面跳转就是一个MainActivity.this.startActivity(intent_hidden); * 但是多个Activity跳转则不通过: * startActivityForResult(Intnet intent, int requestcode) ,第二个参数是请求码 * 当表当前路径的唯一编号 * * 这特别注意:当我们去了新的页面,返回的代码:特别注意这两行代码,当我们把这二行放到点击监听器 * 中,便能回到前面的页面 * ToActivity.this.setResult(Activity.RESULT_CANCELED); * ToActivity.this.finish(); */ Intent intent_more1 = new Intent(MainActivity.this, ToActivity.class); MainActivity.this.startActivityForResult(intent_more1, 1); break; case R.id.button4: Intent intent_more2 = new Intent(MainActivity.this, ThreeActivity.class); /** * Activity之间传递数据: * intent相当于一个包裹,这个里面可以存放数据,当然具体的数据都是保存在bundler里面 */ Bundle bundle = new Bundle(); bundle.putString("ori", "bundler测试"); intent_more2.putExtra("text", "我是第一个页面"); intent_more2.putExtras(bundle); MainActivity.this.startActivityForResult(intent_more2, 2); break; } }
相关文章推荐
- 使用codecs模块,在Python中完成字符编码
- 人生第一C
- tomcat一些知识点
- 多数据源的MapReduce作业(二)--基于Distributed的复制联结
- 《电脑报》
- 宝洁面试经典八大问题(附答案范例)
- 基于Matlab的BP神经网络--源代码与工具箱实现
- SAP 认证是什么
- NYOJ 括号匹配(二) 区间DP
- 2014年王道论坛研究生机试练习赛(二):题目1493:公约数
- 修改jsp导致tomcat访问该页面报错
- UVa 10465 - Homer Simpson DP 完全背包
- theano初步
- 【prim】poj 2485
- HDU-2036-JAVA-多边形面积
- 编译sqoop
- 物联网学习笔记——构建RESTFul平台2
- 第一次接触c语言
- 程序、进程和线程
- poj 2240-Arbitrage Bellman-ford算法