Intent是一种轻量级的消息传递机制,可以在同一个应用程序内部的不同组件之间传递消息,也可以在不同应用程序之间的组件之间传递消息,还可以作为广播事件发布Android系统消息。由于Intent的存在,使得Android系统相互独立的组件成为了一个相互通信的组件集合。除此之外,intent在Android系统上可以发布消息,其他程序通过注册intent过滤器获得广播消息。在Android系统中,应用程序一般有多个Activity,intent可以实现在不同Activity之间切换和数据传递。intent分为显示启动和隐式启动,显示启动必须在intent中指明启动的Activity所在的类,而隐式启动,intent中只需要包含要执行的动作和所包含的数据,而无需指明具体启动哪一个Activity,选择权由Android系统和最终用户决定
本次所用的代码实现的是该题的要求
显示启动时必须创建一个intent,并为它指定当前的应用程序上下文以及要启动的Activity,把创建好的intent作为参数传递给startActivity()方法。
Intent fintent = new Intent(FirstActivity.this, SecondActivity.class); //创建intent对象,并指定程序上下文
startActivity(fintent);
上述两行代码中,创建intent对象,并指定程序上下文以及要启动的Activity,其中FirstActivity.this 是第一个页面所执行的Java代码,SecondActivity.class是将要加载的Activity对应的类名
在使用两个Activity时必须在AndroidManifest.xml文件中注册这两个Activity。注册时使用
//主界面
//注册第二个Activity
//注册第三个Activity
//标签间注册光播接收器
intent启动Activity的代码
Intent fintent = new Intent();
fintent.setClass(FirstActivity.this, SecondActivity.class);
fintent.putExtra("str",string);
startActivity(fintent);
将字符串加载到intent上的代码,在启动intent时将字符串传递到第二个页面
fintent.putExtra("str",string); //其中"str"是要传递的字符串string 的键值
//在第二个界面上接受,是利用“str”这个键值获取从第一个界面传来的值
Intent sintent = getIntent();
Bundle bundles = sintent.getExtras();
string = bundles.getString("str");
package com.example.administrator.jinworks;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class FirstActivity extends AppCompatActivity {
Button bu11 ;
EditText edittext1,edittext2;
TextView textview1,textview2;
String str1,str2,str3,str4,string;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_first);
bu11= (Button)findViewById(R.id.Bu11);
edittext1 = (EditText)findViewById(R.id.ev11);
edittext2 = (EditText)findViewById(R.id.ev12);
textview1 = (TextView)findViewById(R.id.tv11);
textview2 = (TextView)findViewById(R.id.tv12);
bu11.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
str1 = edittext1.getText().toString();
str2 = edittext2.getText().toString();
str3 = textview1.getText().toString();
str4 = textview2.getText().toString();
string = str3+str1 +"\n"+ str4+str2+"\n";
//这是使用intent启动Activity的核心代码
Intent fintent = new Intent();
fintent.setClass(FirstActivity.this, SecondActivity.class);
fintent.putExtra("str",string);
startActivity(fintent);
}
});
}
}
package com.example.administrator.jinworks;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
/**
* Created by Administrator on 2018/10/25 0025.
*/
public class SecondActivity extends AppCompatActivity {
Button bu21;
EditText edittext21,edittext22,edittext23,edittext24;
TextView textview21,textview22,textview23,textview24;
String string2,str21,str22,str23,str24,str25,str26,str27,str28;
String string;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
bu21 = (Button)findViewById(R.id.Bu21);
edittext21 = (EditText)findViewById(R.id.ev21);
edittext22 = (EditText)findViewById(R.id.ev22);
edittext23 = (EditText)findViewById(R.id.ev23);
edittext24 = (EditText)findViewById(R.id.ev24);
textview21 = (TextView)findViewById(R.id.tv21);
textview22 = (TextView)findViewById(R.id.tv22);
textview23 = (TextView)findViewById(R.id.tv23);
textview24 = (TextView)findViewById(R.id.tv24);
str25 = textview21.getText().toString();
str26 = textview22.getText().toString();
str27 = textview23.getText().toString();
str28 = textview24.getText().toString();
Intent sintent = getIntent();
Bundle bundles = sintent.getExtras();
string = bundles.getString("str");
//edittext21.setText(string);
bu21.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
str21 = edittext21.getText().toString();
str22 = edittext22.getText().toString();
str23 = edittext23.getText().toString();
str24 = edittext24.getText().toString();
string2 = string +str25+str21+ "\n" +str26+str22+ "\n" +str27+str23+ "\n" +str28+str24 ;
Intent sintent = new Intent();
sintent.setClass(SecondActivity.this, ThirdActivity.class);
sintent.putExtra("str1",string2);
startActivity(sintent);
}
});
}
}
package com.example.administrator.jinworks;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
/**
* Created by Administrator on 2018/10/25 0025.
*/
public class ThirdActivity extends AppCompatActivity {
Button bu31;
String string2;
TextView textview;
String UNIQUE_STRING = "com.example.administrator.jinworks";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_third);
textview = (TextView)findViewById(R.id.tv31) ;
bu31 = (Button)findViewById(R.id.Bu31);
Intent sintent = getIntent();
Bundle bundles = sintent.getExtras();
string2 = bundles.getString("str1");
textview.setText(string2);
bu31.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent tintent = new Intent(UNIQUE_STRING);
tintent.putExtra("key",string2);
sendBroadcast(tintent);
}
});
}
}
package com.example.administrator.jinworks;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;
/**
* Created by Administrator on 2018/10/26 0026.
*/
public class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent){
String msg = intent.getStringExtra("key");
Toast.makeText(context, msg, Toast.LENGTH_SHORT).show();
}
}
注意:接收EditText输入的值的代码要写在按钮的监听事件中,否则在还没有输入的时候,接收输入的代码已经执行完成,不能再接收输入的值
bu11.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
str1 = edittext1.getText().toString();
str2 = edittext2.getText().toString();
str3 = textview1.getText().toString();
str4 = textview2.getText().toString();
string = str3+str1 +"\n"+ str4+str2+"\n";
//这是使用intent启动Activity的核心代码
Intent fintent = new Intent();
fintent.setClass(FirstActivity.this, SecondActivity.class);
fintent.putExtra("str",string);
startActivity(fintent);
}});