本学期开始安卓的学习,更几篇博客来记录一下
首先新建工程,创建两个empty activity,此处名称都采用默认的名称。
目的是:实现从MainActivity传参数给Main2Activity(value1和value2),然后计算两个参数的和为sum,之后再返回给MainActivity。activity的转换通过按钮触发事件。
MainActivity.java文件如下:
package com.example.administrator.myapplication;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
public class MainActivity extends Activity {
private static final String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d(TAG, "onCreate: ");
Button btnOpen = (Button) findViewById(R.id.btnopen);
btnOpen.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view) {
// 创建Intent对象 关联上下文
Intent intent = new Intent(MainActivity.this, Main2Activity.class);
// 将两个参数放进去 此处只能放对象
intent.putExtra("value1", "100");
intent.putExtra("value2", "200");
// 不需要返回值
// startActivity(intent);
// 需要返回值 1代表requext code
startActivityForResult(intent, 1);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// 该函数接收requestCode和resultCode 可以对它们做判断 即当有多个activity相互作用时方便判断
String back = data.getStringExtra("back");
// 打印日志 显示返回的数值
Log.d(TAG, "onActivityResult: " + back);
}
}
Main2Activity.java代码如下:
package com.example.administrator.myapplication;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
public class Main2Activity extends Activity {
private static final String TAG = "Main2Activity";
public int sum;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
// 接收传递过来的Intent对象
Intent intent = getIntent();
// 接收内部的参数
String value1 = intent.getStringExtra("value1");
String value2 = intent.getStringExtra("value2");
// 打印两个参数的值
Log.d(TAG, "onCreate: " + "value1:\t" + value1 + "\tvalue2\t" + value2);
// 求和 注意将字符串对象转换为 Integer对象
sum = Integer.parseInt(value1) + Integer.parseInt(value2);
Button btnback = (Button) findViewById(R.id.btnBack);
// 定义返回事件
btnback.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intentBack = new Intent(Main2Activity.this, MainActivity.class);
// 返回字符串
intentBack.putExtra("back", String.valueOf(sum));
// 设置resultCode为1 并返回intentBack
setResult(1, intentBack);
// 结束
finish();
}
});
}
}
两个布局文件分别如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:orientation="vertical"
tools:context="com.example.administrator.myapplication.MainActivity">
<TextView
android:textSize="30dp"
android:textColor="#FF0000"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="The first activity" />
<Button
android:id="@+id/btnopen"
android:text="Open"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:orientation="vertical"
tools:context="com.example.administrator.myapplication.Main2Activity">
<TextView
android:textSize="30sp"
android:textColor="#77FF0000"
android:text="The second activity"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<Button
android:id="@+id/btnBack"
android:text="back"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>