实验目的:
熟悉和掌握Android组件间通信的方式和技巧。
实验要求:
1.运行课本的示例程序,理解组件通信的方式和过程
2.设计一个主Activity和一个子Activity
(Sub-Activity),使用主Activity上的按钮启动子Activity
,并将子Activity的一些信息返回给主Activity
,并显示在主Activity上。
可以自己设计界面和场景,也可以使用下面提供的内容:
主Activity界面上有一个“登录”按钮和一个用了显示信息的TextView
,点击“登录”按钮后打开一个新的Activity,新Activity上面有输入用户名的控件,在用户关闭这个Activity后,将用户输入的用户名到主Activity
,并显示在主Activity的TextView
中。
实验结果:

实验代码:
MainActivity.java
package com.example.shiyan4;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
int Subact1=1;
TextView textView;
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode==Subact1)
{
//String str= data.getStringExtra("userstr");
textView.setText("用户名:"+data.getCharSequenceExtra("userstr"));
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button=(Button) findViewById(R.id.button);
textView=findViewById(R.id.textview);
button.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view) {
Intent intent=new Intent(MainActivity.this,Subactivity.class);//显式启动方式
//Intent intent1=new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.baidu.com"));
Intent intent2=new Intent("sub1");//隐式启动方式
startActivityForResult(intent2,Subact1);
}
});
}
}
SubActivity.java
package com.example.shiyan4;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
public class Subactivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.sub_layout);
Button button=(Button) findViewById(R.id.button2);
EditText editText=(EditText)findViewById(R.id.editview);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent=new Intent(Subactivity.this,MainActivity.class);
intent.putExtra("userstr",editText.getText());
setResult(RESULT_OK,intent);
finish();
}
});
}
}