您的位置:首页 > 移动开发 > Android开发

android:从另外一个activity中返回数据

2016-02-12 17:09 621 查看
首先看一下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>


这是运行结果

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