展会信息港展会大全

Android: 用Intenti实现Activity之间数据传递
来源:互联网   发布日期:2016-01-14 09:31:08   浏览:1569次  

导读:程序功能:缀用Intent传递数据、跳转Activity。两个Activity组件,Activity1中包含一个TextView和一个Button。当点击Button时,可以启动Acti...

程序功能:

使用Intent传递数据、跳转Activity。两个Activity组件,Activity1中包含一个TextView和一个Button。当点击Button时,可以启动Activity2对当前TextView中的内容进行编辑。Activity2的布局界面除了编辑TextView文本信息的编辑框外,还包含两个按钮“保存”和“放弃”。当单击“保存”,Activity2中编辑的文本将返回Activity1,并更新到Activity1中的TextView中;单击“放弃”也将返回Activity1,但之前的编辑操作将被放弃。

MainActivity.java

[java]

package org.hq.testIntent;

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 String msg = "";

private EditText editText = null;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

editText = (EditText)super.findViewById(R.id.edittext);

editText.setEnabled(false);//设置编辑框不可编辑

Button send_btn = (Button)super.findViewById(R.id.send_btn);

send_btn.setOnClickListener( (OnClickListener) new OnClickListenerImpl() );

}

private class OnClickListenerImpl implements OnClickListener //实现OnClickListener类

{

@Override

public void onClick(View v)

{

Intent intent = new Intent();

msg = editText.getText().toString(); //获取编辑框中字符串

intent.putExtra("org.hq.testIntent.msg", msg); //向下一个Activity发送编辑框中的字符串,初始化时字符串为空

intent.setClass(MainActivity.this, EditActivity.class);

startActivityForResult(intent,100);//启动下一个Activity,设置一个请求值100

}

}

@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;

}

@Override

protected void onActivityResult(int requestCode,int resultCode,Intent data)

{

super.onActivityResult(requestCode, resultCode, data);

if(requestCode==100)//如果一个返回的Activity的请求值为100,说明是本Activity是调用者

{

EditText tv = (EditText)findViewById(R.id.edittext);

String msg = "";

if ( 20 == resultCode ) //如果子Activity返回值为20,说明点击了保存按钮

{

msg = data.getStringExtra("org.hq.testIntent.msg"); //获取字符串

tv.setText(msg);//更改编辑框的内容

}

}

}

}

package org.hq.testIntent;

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 String msg = "";

private EditText editText = null;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

editText = (EditText)super.findViewById(R.id.edittext);

editText.setEnabled(false);//设置编辑框不可编辑

Button send_btn = (Button)super.findViewById(R.id.send_btn);

send_btn.setOnClickListener( (OnClickListener) new OnClickListenerImpl() );

}

private class OnClickListenerImpl implements OnClickListener //实现OnClickListener类

{

@Override

public void onClick(View v)

{

Intent intent = new Intent();

msg = editText.getText().toString(); //获取编辑框中字符串

intent.putExtra("org.hq.testIntent.msg", msg); //向下一个Activity发送编辑框中的字符串,初始化时字符串为空

intent.setClass(MainActivity.this, EditActivity.class);

startActivityForResult(intent,100);//启动下一个Activity,设置一个请求值100

}

}

@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;

}

@Override

protected void onActivityResult(int requestCode,int resultCode,Intent data)

{

super.onActivityResult(requestCode, resultCode, data);

if(requestCode==100)//如果一个返回的Activity的请求值为100,说明是本Activity是调用者

{

EditText tv = (EditText)findViewById(R.id.edittext);

String msg = "";

if ( 20 == resultCode ) //如果子Activity返回值为20,说明点击了保存按钮

{

msg = data.getStringExtra("org.hq.testIntent.msg"); //获取字符串

tv.setText(msg);//更改编辑框的内容

}

}

}

}

EditActivity.java

[java]

package org.hq.testIntent;

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.view.Menu;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.EditText;

public class EditActivity extends Activity{

private String msg = null;

privateEditText et = null;

privateIntent intent = null;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_edit);

intent = getIntent();

if ( null != intent )

{

msg = intent.getStringExtra("org.hq.testIntent.msg"); //获取父Activity传来的字符串

}

et = (EditText)super.findViewById(R.id.edittext);//事实上这个程序中两个Activity并不一定要共享同一个编辑框

et.setEnabled(true);//设置编辑框可读

et.setText(msg);//设置字串内容

Button ok_btn = (Button)super.findViewById(R.id.ok_btn);//获取确认按钮

Button return_btn = (Button)super.findViewById(R.id.return_btn); //获取返回按钮

ok_btn.setOnClickListener( (OnClickListener) new OkOnClickListenerImpl() );

return_btn.setOnClickListener( (OnClickListener) new ReturnOnClickListenerImpl());

}

private class ReturnOnClickListenerImpl implements OnClickListener //实现OnClickListener类

{

@Override

public void onClick(View v)

{

Intent intent = new Intent();

setResult(30,intent);//点击取消,不返回数据

finish(); //本次Activity结束,表面上是两个Activity交互,实际上子Activity返回后它的生命周期已经结束了,再次调用是新生成的Activity

}

}

private class OkOnClickListenerImpl implements OnClickListener //实现OnClickListener类

{

@Override

public void onClick(View v)

{

Intent intent = new Intent();

msg = et.getText().toString(); //获取编辑框中的字符串

intent.putExtra("org.hq.testIntent.msg", msg); //向下一个Activity发送数据

setResult(20,intent);

finish();//本次Activity结束,表面上是两个Activity交互,实际上子Activity返回后它的生命周期已经结束了,再次调用是新生成的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_edit, menu);

return true;

}

}

package org.hq.testIntent;

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.view.Menu;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.EditText;

public class EditActivity extends Activity{

private String msg = null;

privateEditText et = null;

privateIntent intent = null;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_edit);

intent = getIntent();

if ( null != intent )

{

msg = intent.getStringExtra("org.hq.testIntent.msg"); //获取父Activity传来的字符串

}

et = (EditText)super.findViewById(R.id.edittext);//事实上这个程序中两个Activity并不一定要共享同一个编辑框

et.setEnabled(true);//设置编辑框可读

et.setText(msg);//设置字串内容

Button ok_btn = (Button)super.findViewById(R.id.ok_btn);//获取确认按钮

Button return_btn = (Button)super.findViewById(R.id.return_btn); //获取返回按钮

ok_btn.setOnClickListener( (OnClickListener) new OkOnClickListenerImpl() );

return_btn.setOnClickListener( (OnClickListener) new ReturnOnClickListenerImpl());

}

private class ReturnOnClickListenerImpl implements OnClickListener //实现OnClickListener类

{

@Override

public void onClick(View v)

{

Intent intent = new Intent();

setResult(30,intent);//点击取消,不返回数据

finish(); //本次Activity结束,表面上是两个Activity交互,实际上子Activity返回后它的生命周期已经结束了,再次调用是新生成的Activity

}

}

private class OkOnClickListenerImpl implements OnClickListener //实现OnClickListener类

{

@Override

public void onClick(View v)

{

Intent intent = new Intent();

msg = et.getText().toString(); //获取编辑框中的字符串

intent.putExtra("org.hq.testIntent.msg", msg); //向下一个Activity发送数据

setResult(20,intent);

finish();//本次Activity结束,表面上是两个Activity交互,实际上子Activity返回后它的生命周期已经结束了,再次调用是新生成的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_edit, menu);

return true;

}

}

运行结果:

跳转:

编辑后保存:

赞助本站

人工智能实验室

相关热词: android开发 教程

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港