Intent可以理解为信使(意图)
由Intent来协助完成Android各个组件之间的通信。
Intent实现页面之间的跳转有两种方式
1、 startActivity(intent)
2、 startActivityForResult(intent,requestCode);
onActivityResult(intrequestCode,int resultCode,Intent data)
setResult(resultCode,data)
下面我们看具体代码示例
首先新建了两个XML的显示文件
第一个界面中有两个按钮,分别用于实现两种方式跳转,同时还有一个TextView用于显示第二个页面回传的信息。第二个页面中只有一个按钮,用户回调到第一个页面。下面分别看这两个的activity
/** * */ package com.example.intentdemo; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; public class FActivity extends Activity { private Button bt1; private Button bt2; private TextView tv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.factivity); bt1 = (Button) findViewById(R.id.button1_first); //通过点击bt1实现页面跳转,通过startActivity方式实现 bt1.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { //初始化Intent //第一个参数上下文对象 //第二个参数,目标文件 Intent intent = new Intent(FActivity.this, SActivity.class); startActivity(intent); } }); bt2 = (Button) findViewById(R.id.button2_second); bt2.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { Intent intent = new Intent(FActivity.this, SActivity.class); //第一个参数是intent对象 //第二个参数是一个请求的标识 startActivityForResult(intent, 1); } }); } /* * 通过startActivityForResult跳转,接受返回数据的方法 * requestCode:请求的标识 * resultCode:第二个页面返回的标识 * data:是第二个页面回传的数据 */ @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); tv = (TextView) findViewById(R.id.textView1); if(requestCode==1&&resultCode==1){ tv.setText(data.getStringExtra("data")); } } }
然后看第二个页面相关的activity
package com.example.intentdemo; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class SActivity extends Activity { private Button btn; private String content = "你好!"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.sactivity); /* * 第二个页面给第一个页面回传相应的数据 * 回传第一个页面实际是一个Intent对象 */ btn = (Button) findViewById(R.id.button1); btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { Intent data = new Intent(); data.putExtra("data", content); setResult(1, data); finish(); } }); } }
时间: 2024-10-01 12:12:11