Android有四大组件,第一就是Activity,可见Activity很重要,他是负责用户交互的重要组件。这篇博客主要讲一下Activity的创建、启动和关闭,以及Activity之间是如何传值的。
生命周期
Activity必不可少的知识点就是它的生命周期:一张图带大家了解它的生命周期
Activity的生命周期需要慢慢理解,刚开始肯定不太理解这些东西,但是当你看得多了,便自然会理解。
启动和关闭
Activity的启动是利用Intent来完成的,大致的方法是:
Intent i = new Intent (this,xxx.class)
startActivity(i)
它的关闭很容易直接在相应的Activity中调用finish()方法即可
数据在Activity中的传递
典例一:一个Activity的值传到另外一个Activity
第一个Activity:
布局代码:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.LinearLayoutCompat xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.example.yzg.highui.PassValuesActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="省份"/>
<EditText
android:id="@+id/shengfen"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="市级"/>
<EditText
android:id="@+id/shiji"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="县级"/>
<EditText
android:id="@+id/xianji"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
<Button
android:id="@+id/passvalues"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="把上面的值传到另外一个界面"/>
</android.support.v7.widget.LinearLayoutCompat>
逻辑代码:
package com.example.yzg.highui;
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;
public class PassValuesActivity extends AppCompatActivity {
EditText shengfen;
EditText shiji;
EditText xianji;
Button pass;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_pass_values);
shengfen = findViewById(R.id.shengfen);
shiji = findViewById(R.id.shiji);
xianji = findViewById(R.id.xianji);
pass = findViewById(R.id.passvalues);
pass.setOnClickListener(new Click());
}
private class Click implements View.OnClickListener {
@Override
public void onClick(View v) {
String s1 = shengfen.getText().toString();
String s2 = shiji.getText().toString();
String s3 = xianji.getText().toString();
Bundle bundle = new Bundle();
bundle.putString("s1",s1);
bundle.putString("s2",s2);
bundle.putString("s3",s3);
Intent intent = new Intent(PassValuesActivity.this,Passvalue2Activity.class);
intent.putExtras(bundle);
startActivity(intent);
}
}
}
接收数据的Activity:
界面:
布局代码:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.LinearLayoutCompat xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.yzg.highui.Passvalue2Activity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="总地址"
android:layout_margin="20dp"
android:textSize="20dp"
/>
<TextView
android:id="@+id/zongdizhi"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20dp"
/>
</android.support.v7.widget.LinearLayoutCompat>
逻辑代码:
package com.example.yzg.highui;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
public class Passvalue2Activity extends AppCompatActivity {
TextView zongdizhi;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_passvalue2);
zongdizhi = findViewById(R.id.zongdizhi);
Intent intent = getIntent();
Bundle extras = intent.getExtras();
Log.d("调式", "onCreate: "+extras.getString("s2"));
Log.d("调式", "onCreate: "+extras.getString("s3"));
zongdizhi.setText(extras.getString("s1")+ "" + extras.getString("s2")+extras.getString("s3"));
}
}
典例二:实现在获取Activity的返回值
第一个Activity:
界面:
布局文件代码
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.LinearLayoutCompat xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.yzg.highui.BackValueActivity">
<Button
android:id="@+id/touxiang"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="请选择一张图片作为你的头像"
/>
<ImageView
android:id="@+id/touxiangimage"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</android.support.v7.widget.LinearLayoutCompat>
逻辑文件:
package com.example.yzg.highui;
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.ImageView;
public class BackValueActivity extends AppCompatActivity {
Button button;
ImageView imageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_back_value);
button = findViewById(R.id.touxiang);
imageView = findViewById(R.id.touxiangimage);
button.setOnClickListener(new Click());
}
private class Click implements View.OnClickListener {
@Override
public void onClick(View v) {
Intent intent = new Intent(BackValueActivity.this, BackValue2Activity.class);
//requestCode 是一个接收码 只有两者一样才能获得相应的值
startActivityForResult(intent,0);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (data!=null){
int id = data.getIntExtra("icon",0);
imageView.setImageResource(id);
}
}
}
第二个Activity:
界面:
布局代码:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.LinearLayoutCompat xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.example.yzg.highui.BackValue2Activity">
<ImageView
android:id="@+id/i1"
android:layout_width="100dp"
android:layout_height="100dp"
android:src="@drawable/image1"
/>
<ImageView
android:id="@+id/i2"
android:layout_width="100dp"
android:layout_height="100dp"
android:src="@drawable/image2"
/>
<ImageView
android:id="@+id/i3"
android:layout_width="100dp"
android:layout_height="100dp"
android:src="@drawable/image3"
/>
<ImageView
android:id="@+id/i4"
android:layout_width="100dp"
android:layout_height="100dp"
android:src="@drawable/image4"
/>
</android.support.v7.widget.LinearLayoutCompat>
逻辑代码:
package com.example.yzg.highui;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
public class BackValue2Activity extends AppCompatActivity {
ImageView imageView1;
ImageView imageView2;
ImageView imageView3;
ImageView imageView4;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_back_value2);
imageView1 = findViewById(R.id.i1);
imageView2 = findViewById(R.id.i2);
imageView3 = findViewById(R.id.i3);
imageView4 = findViewById(R.id.i4);
imageView1.setOnClickListener(new Click());
imageView2.setOnClickListener(new Click());
imageView3.setOnClickListener(new Click());
imageView4.setOnClickListener(new Click());
}
private class Click implements View.OnClickListener {
Intent intent = new Intent();
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.i1:
intent.putExtra("icon",R.drawable.image1);
break;
case R.id.i2:
intent.putExtra("icon",R.drawable.image2);
break;
case R.id.i3:
intent.putExtra("icon",R.drawable.image3);
break;
case R.id.i4:
intent.putExtra("icon",R.drawable.image4);
break;
}
//这个resultCode必须和另外一个界面的resultCode相等才能传递
setResult(0,intent);
finish();
}
}
}
关于Activity的知识点基本就这些了,我只是把常用的两个典型的案例写出来,还有很多的细节自己需要学习。
有兴趣的小伙伴可以一起来学习啊!