您的位置:首页 > 其它

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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: