概述:
本博文实现一种小程序,两个Activity单向通信,主从关系,MainActivty 页面布局一个EditText+Button,实现逻辑是单击按钮将信息发送给另外一个DisplayMessageActivity,DisplayMessageActivty页面布局有一个TextView内容为EditText传过来的。整个就是这么简单
实现:
1创建空Activty项目,命名为IntentDemo,页面布局
1.1为了实现单击按钮响应事件,可以有两种方法,第一种是这样的
public static final String tag="TEST"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button button=(Button)findViewById(R.id.button); button.setOnClickListener(new OnClickListener(){ @Override public void onClick(View view) { EditText edittext=(EditText)findViewById(R.id.editText); Intent intent=new Intent(this,DisplayMessageActivtiy.class); String message=edittext.getText().toString(); intent.putExtra(tag,message); startActivty(intent); } }); }
也就是说直接在onCreate函数里面实现了监听按钮的方法
第二种方法是自己实现一个函数,然后与按钮单击事件关联起来
这个函数在MainActivtiy.java里面实现如下:
public void sendMessage(View view) { Intent intent=new Intent(this,DisplayMessageActivity.class); EditText edittext=(EditText)findViewById(R.id.editText); String message=edittext.getText().toString(); intent.putExtra(EXTRA_MESSAGE,message); startActivity(intent); }
可以对比一下,要让系统将此函数视为与 android:onClick 属性兼容,需要这些详细信息。具体来说,函数必须声明以下内容:
- 公共访问
- 空返回值
- 以 View作为唯一参数(它是之前点击的 View对象)
2 创建一个空Activity的Activtiy
我们选择empty activity ,然后系统自动做三件事:
① 创建DisplayMessageActivity.java
② 创建activity_display_message.xml文件
③在AndroidManifest.xml文件的<application>元素下自动添加<activity>子元素,内容如下
手动添加的内容是为了添加向上导航
DisplayMessageActivity应用不是主入口的每个屏幕(所有不是主屏幕的屏幕)都应提供导航,以便用户在应用栏中点按“向上”按钮后可以返回应用层次结构中的逻辑父屏幕。
需要做的全部工作是在 AndroidManifest.xml
文件中声明哪个 Activity 是逻辑父项。因此,打开 app > manifests > AndroidManifest.xml 处的文文件,找到 DisplayMessageActivity
的 <activity>
标记。
3编写逻辑代码
在DisplayMessageActivity的onCreate函数中提取处intent的Extra信息,并写入到TextView中
1 @Override 2 protected void onCreate(Bundle savedInstanceState) { 3 super.onCreate(savedInstanceState); 4 setContentView(R.layout.activity_display_message); 5 Intent intent=getIntent(); 6 String message=intent.getStringExtra(MainActivity.EXTRA_MESSAGE); 7 TextView textview=(TextView)findViewById(R.id.textView); 8 textview.setText(message); 9 Log.i(tag,"DisplayMessageActivity:(1)onCreate()"); 10 }
最终效果截图