`
kurting615
  • 浏览: 93459 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Activity跳转传值

 
阅读更多
Activity跳转与传值,主要是通过Intent类来连接多个Activity,以及传递数据。
 

Intent是Android一个很重要的类。Intent直译是“意图”,比如你想从这个Activity跳转到另外一个Activity,这就是一个意图。

activity跳转可以选择无返回结果,也可以有。如下两个demo

 

无返回结果:

 

package com.ly;

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.EditText;
import android.widget.RadioButton;

public class BundleTestActivity extends Activity {
	EditText et1 ;
	EditText et2 ;
	Button bt;
	RadioButton rb;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        et1=(EditText) findViewById(R.id.et1);
        et2=(EditText) findViewById(R.id.et2);
        rb=(RadioButton) findViewById(R.id.radioButton1);
        bt=(Button) findViewById(R.id.btn);
        bt.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				String username =et1.getText().toString();
				String password=et2.getText().toString();
				String sex =rb.isChecked()?"男":"女";
				User u =new User(username,password,sex);
				Bundle b =new Bundle();
				b.putSerializable("user", u);
				Intent i =new Intent();
				i.setClass(BundleTestActivity.this, Show.class);
				i.putExtras(b);
				startActivity(i);
			}
		});
    }
}

activity

package com.ly;

import java.io.Serializable;

public class User implements Serializable {
private String  username;
public String getUsername() {
	return username;
}
public void setUsername(String username) {
	this.username = username;
}
public String getPassword() {
	return password;
}
public User(String username, String password, String sex) {
	super();
	this.username = username;
	this.password = password;
	this.sex = sex;
}
public void setPassword(String password) {
	this.password = password;
}
public String getSex() {
	return sex;
}
public void setSex(String sex) {
	this.sex = sex;
}
private String  password;
private String sex;
}
 

传递的实体(实现序列化)

package com.ly;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;

public class Show extends Activity {
private TextView tw;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.show);
		tw =(TextView) findViewById(R.id.tw);
		Intent i =getIntent();
		Bundle b =i.getExtras();
		User u = (User) b.getSerializable("user");
		tw.setText(u.getUsername()+u.getSex());
	}

}

 

获得数据

(布局配置省略)

 

返回结果的跳转:

需要重写onActivityResult方法

package com.ly;

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.EditText;

public class ActivitycallbackdataActivity extends Activity {

	private Button btn;
	private EditText et;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		btn = (Button) findViewById(R.id.btn);
		et = (EditText) findViewById(R.id.et);
		btn.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				Intent intent = new Intent(ActivitycallbackdataActivity.this,
						Result.class);
				startActivityForResult(intent, 0);
			}
		});
	}

	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		if (requestCode == 0 && resultCode == 0) {
			Bundle datas = data.getExtras();
			String city = datas.getString("city");
			et.setText(city);
		}
	}
}

 跳转到的类

package com.ly;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;

public class Result extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		Intent i = getIntent();
		Bundle b =new Bundle();
		b.putString("city", "广州");
		i.putExtras(b);
		this.setResult(0, i);
		this.finish();
	}

}

 ** 注意,在setResult后,要调用finish()销毁当前的Activity,否则无法返回到原来的Activity,就无法执行原来Activity的onActivityResult函数,看到当前的Activity没反应。

 

附:demo1布局


  • 大小: 21.9 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics