Android开发(二)--- Activity

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的知识点基本就这些了,我只是把常用的两个典型的案例写出来,还有很多的细节自己需要学习。

有兴趣的小伙伴可以一起来学习啊!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值