android:从另外一个activity中返回数据
原创
©著作权归作者所有:来自51CTO博客作者scx_white的原创作品,请联系作者获取转载授权,否则将追究法律责任
首先看一下activity返回数据的结构图
以前我们启动另外一个activity用的是
startActivity(Intent intent)
方法 而若想打开另外一个activity并且返回结果 就要使用
startActivityForResult(Intent intent,int requestCode)
intent就不用说了 其中requestCode就是请求码 为了在另外一个activity中分辨 每个请求码应该做的事情
具体作用是:
我们实现的效果是:
主界面是这样
当我们点击选择按钮后打开另外一个activity
当我们点击号码时,结束这个activity并且在主activity中的编辑框中显示这个号码
具体实现代码如下。
MainActivity
package com.example.activityforresult;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends Activity {
private EditText editText;
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText=(EditText) findViewById(R.id.editText);
button=(Button) findViewById(R.id.button);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
//从另外一个activity得到结果不能再用startActivity()方法要用这个方法
startActivityForResult(new Intent(MainActivity.this,ResultActivity.class),
0x1);
}
});
}
/*
* 如果要得到返回的结果 一定要实现这个类
* */
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
//如果data等于null返回
if(data==null)
return ;
String phoneNumber=data.getExtras().getString("phoneNumber");
//更新编辑框内容为所选的号码
editText.setText(phoneNumber);
}
}
在ResultActivity中 需要用setResult(int resultCode, Intent data);方法返回选择的号码。其中resultCode是一个int型,而data是Intent型 。新建一个intent对象就好了
然后调用finish()方法结束这个activity 别忘记在AndroidManifest配置一下信息如下
<activity
android:name="com.example.activityforresult.ResultActivity"
></activity>
所以ResultActivity代码如下
package com.example.activityforresult;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;
public class ResultActivity extends Activity{
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_result);
textView=(TextView) findViewById(R.id.textView);
textView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Intent intent=new Intent();
intent.putExtra("phoneNumber", textView.getText().toString());
setResult(0x1, intent);
finish();
}
});
}
}
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<EditText
android:id="@+id/editText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="11"
/>
<Button
android:id="@+id/button"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="选择"
android:layout_toRightOf="@id/editText"
/>
</RelativeLayout>
activity_result.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="15518901241"
/>
</LinearLayout>
这是运行结果