Android 入门学习 二
上一篇已经学习了但见一个简单页面,有输入框,有按钮,但是不能点击,此篇文章将会学习如何进行页面跳转,启动其他的Activity
响应send(发送)按钮
- 首先创建一个新的Activity DisplayMessageActivity 用来跳转
- 打开res/layout目录下的activity_my.xml 文件
- 给 Button 标签添加android:onclick属性(android:onclick 属性的值就是当用户点击你屏幕按钮时触发方法的名字)
代码示例
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button_send"
android:onClick="sendMessage"/>
- 在java/com.mycompany.myfirstapp目录下MainActivity.java 文件中添加 sendMessage() 方法,方法名称必须和android:onClick 属性中提供的方法名一致
public void sendMessage(View view){} //view类型,代表被点击的视图
必须满足以下条件:
- 是Public函数
- 没有返回值
- 有唯一的参数
-
sendMessage() 方法
- Intent : 不同组件中提供运行是连接的对象。Intent 代表一个应用"想去做什么事",你可以用它做各种各
样的任务,不过大部分的时候他们被用来启动另一个Activity - findViewById() : 取得元素
- Intent : 不同组件中提供运行是连接的对象。Intent 代表一个应用"想去做什么事",你可以用它做各种各
MainActivity代码示例
public void sendMessage(View view) {
/**
* Intent构造函数中有两个参数
* 1.第一个参数是Context(用 this 是因为当前Activity是 Context 的子类)
* 2.接收系统发送的Intent的应用组件的class对象(被启动的 DisplayMessageActivity)
* 3.
* */
Intent intent = new Intent(this, DisplayMessageActivity.class);
//用findViewById()方法得到EditText元素
EditText editText = findViewById(R.id.edit_message);
String message = editText.getText().toString();
/**
* 1.将EditText 的文本内容关联到本地变量并通过putExtra()方法传值Intent
* 2.EXTRA_MESSAGE:让新启动的activity能查询,定义key为一个public型的常量,通常使用应用程序
* 包名作为前缀来定义意图键是很好的做法.在应用程序与其他应用程序进行交互时仍可以确保意图键唯一。
* 3.Intent 可以携带各种数据类型的集合的key-value附加对,称作extras。 putExtra()方法把键名
* 作为第一个参数,把值作为第二个参数。
* */
intent.putExtra(EXTRA_MESSAGE, message);
//启动新的activity
startActivity(intent);
}
sendMessage()方法完成后需要启动新的Activity 也就是我们之前创建的 DisplayMessageActivity
- 首先需要得到Intent 并赋值给本地变量
Intent intent = getIntent()
- 然后将MyActivity 传递过来的文本使用 getStringExtra() 获取
String message = intent.getStringExtra(MyActivity.EXTRA_MESSAGE);
- 然后创建TextView 对象并赋值
TextView textView = new TextView(this);
textView.setTextSize(40);
textView.setText(message);
textView.setTextColor(Color.parseColor("#ff7f50"));
- 最后通过setContentView() 方法把TextView作为activity布局的根视图
setContentView(textView)
DisplayMessageActivity 代码示例
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_display_message);
//得到intent 并赋值给本地变量
Intent intent =getIntent();
//传递过来的文本使用 getStringExtra()
String message =intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
/**
* setTextSize() 设置文本字体字体大小
* setText() 设置文本内容
* setTextColor() 设置字体颜色
* */
TextView textView = new TextView(this);
textView.setTextSize(40);
textView.setText(message);
textView.setTextColor(Color.parseColor("#ff7f50"));
//通过调用activity的setContentView()把TextView作为activity布局的根视图
setContentView(textView);
}