intent 可以传递数据,同样也可以返回数据给activity ,实际开发中这种情况也是非常之多。下面我们来看看如何 从一个 activity 返回数据给 原来的activity
一,新建 android 项目
我们再新建2个activity ------ OneActivity ---- TwoActivity ,创建好布局文件,如下图,
二,修改MainActiviy 代码
package com.xiamiaomiao.testintent002; import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.view.Menu; import android.view.View; import android.widget.Button; import android.widget.TextView; public class MainActivity extends Activity { private Button button1; private Button button2; private TextView tx; private final byte REQUESTCODE_ONE_ACTIVITY = 1; private final byte REQUESTCODE_TWO_ACTIVITY = 2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button1 = (Button) this.findViewById(R.id.button1); button2 = (Button) this.findViewById(R.id.button2); tx = (TextView) this.findViewById(R.id.textView2); button1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { Intent intent = new Intent(MainActivity.this, OneActivity.class); // 请求码 1 startActivityForResult(intent, REQUESTCODE_ONE_ACTIVITY); // } }); button2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { Intent intent = new Intent(MainActivity.this, TwoActivity.class); // 请求码 2 startActivityForResult(intent, REQUESTCODE_TWO_ACTIVITY); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.activity_main, menu); return true; } /** * requestcode 程序回调此 方法 传入 startActivityForResult 时 发出的请求吗 来对应不同的activity */ @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); // 下面我可以作判断 if (resultCode == 2) { switch (requestCode) { case REQUESTCODE_ONE_ACTIVITY: //表示是 oneActivity 返回 tx.setText(data.getStringExtra("one")); break; case REQUESTCODE_TWO_ACTIVITY: //表示是 twoActivity返回 tx.setText(data.getStringExtra("two")); break; default: break; } } } }
三,修改oneActivity 和 TwoActivity 如下,(2个 大致相同,只是拿到edittext里的数据)package com.xiamiaomiao.testintent002; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; public class OneActivity extends Activity{ private EditText et; private Button button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.one); et = (EditText) this.findViewById(R.id.editText1); button = (Button) this.findViewById(R.id.button1); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { String etStr = et.getText().toString(); //我们将 etstr返回到mainActivty //不需要指定 跳转位置 Intent intent = new Intent(); intent.putExtra("one", etStr); //返回的结果码 设为2 等下要用到 setResult(2, intent); //调用 一下 表示 该 activity 声明周期结束 finish(); } }); } }
最后修改好你的 清单文件 androidManIfest.xml 部署运行一下试试看。是不是可以得到activity 返回的数据。