Android移动开发第二次作业 Activity的生命周期与跳转

一、功能说明

1、请根据课程内容实现对Activity生命周期的理解,使用log展示生命周期的状态变化;

 

2、根据博客:https://www.jianshu.com/p/c4cfe38a91ed的内容(进阶篇中的 “点击”),在前次作业的基础上增加列表项的单项点击功能,具体要求是:新建一个新的activity1,recycleview的某一项点击后跳转到这个新的activity1。如:点击新闻列表会跳转到新闻详情页面;

 

3、实现最新的activityforresult功能,具体要求如下:新建一个新的activity2,在activity1上添加按钮可收到activity2的回传值。如:新闻详情页面中点击收藏按钮可显示当前的收藏数量为N。

二、代码解析

1.新建列表点击功能

@Override
    public void onBindViewHolder(myviewholder myviewholder, int j) {
        myviewholder.textView.setText(list.get(j));
        myviewholder.textView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(context,ItemActivity2.class);
                context.startActivity(intent);
            }
        });

    }

2.新建ItemActivity.java

package com.example.work2;

import androidx.activity.result.ActivityResult;
import androidx.activity.result.ActivityResultCallback;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class ItemActivity2 extends AppCompatActivity {
    private Button button;
    private TextView textView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_item2);

        textView = findViewById(R.id.itemtextview1);

        button = findViewById(R.id.itembutton);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent=new Intent(ItemActivity2.this,resulteActivity.class);
                test.launch(intent);


            }
        });
    }

        public ActivityResultLauncher test;
        {
            test = registerForActivityResult(
                    new ActivityResultContracts.StartActivityForResult(),
                    new ActivityResultCallback<ActivityResult>() {

                        @Override
                        public void onActivityResult(ActivityResult result) {
                            if (result.getResultCode() == 888) {
                                Log.d("xr", "onActivityResultLauncher...");
                                textView.setText(result.getData().getStringExtra("data"));
                            }
                        }
                    });
        }
@Override
protected void onStart() {
super.onStart();
Log.d("wcc", "onStart: ");
}

@Override
protected void onStop() {
super.onStop();
Log.d("wcc", "onStop: ");
}

@Override
protected void onDestroy() {
super.onDestroy();
Log.d("wcc", "onDestroy: ");
}

@Override
protected void onPause() {
super.onPause();
Log.d("wcc", "onPause: ");
}

@Override
protected void onResume() {
super.onResume();
Log.d("wcc", "onResume: ");
}

@Override
protected void onRestart() {
super.onRestart();
Log.d("wcc", "onRestart: ");
}
 }

3.配置ItemActivity.java对应的activity_item.xml文件

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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=".ItemActivity2">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        app:layout_constraintStart_toStartOf="parent">

        <TextView
            android:id="@+id/itemtextview2"
            android:layout_width="match_parent"
            android:layout_height="81dp"
            android:text="这是详情界面"
            android:textSize="48sp"
            tools:ignore="MissingConstraints" />

        <Button
            android:id="@+id/itembutton"
            android:layout_width="match_parent"
            android:layout_height="78dp"
            android:text="查看课程信息"
            android:textSize="34sp"
            tools:ignore="MissingConstraints" />

        <TextView
            android:id="@+id/itemtextview1"
            android:layout_width="match_parent"
            android:layout_height="450dp"
            android:text="这是返回信息"
            android:textSize="48sp"
            tools:ignore="MissingConstraints" />
    </LinearLayout>

</androidx.constraintlayout.widget.ConstraintLayout>

4.新建ResultActivity.java

package com.example.work2;

import androidx.appcompat.app.AppCompatActivity;

import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;

import java.util.Calendar;

public class resulteActivity extends AppCompatActivity {

    @SuppressLint("MissingInflatedId")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_resulte);

        Intent intent =getIntent();
        intent.putExtra("data","今天是安卓课程,老师是肖蓉。"+
                "上课时间是:"+ Calendar.getInstance().getTime());
        setResult(888,intent);
        finish();
    }
@Override
protected void onStart() {
super.onStart();
Log.d("wcc", "onStart: ");
}

@Override
protected void onStop() {
super.onStop();
Log.d("wcc", "onStop: ");
}

@Override
protected void onDestroy() {
super.onDestroy();
Log.d("wcc", "onDestroy: ");
}

@Override
protected void onPause() {
super.onPause();
Log.d("wcc", "onPause: ");
}

@Override
protected void onResume() {
super.onResume();
Log.d("wcc", "onResume: ");
}

@Override
protected void onRestart() {
super.onRestart();
Log.d("wcc", "onRestart: ");
}
 }

5.利用log展现Activity的生命周期变化

@Override
protected void onStart() {
super.onStart();
Log.d("wcc", "onStart: ");
}

@Override
protected void onStop() {
super.onStop();
Log.d("wcc", "onStop: ");
}

@Override
protected void onDestroy() {
super.onDestroy();
Log.d("wcc", "onDestroy: ");
}

@Override
protected void onPause() {
super.onPause();
Log.d("wcc", "onPause: ");
}

@Override
protected void onResume() {
super.onResume();
Log.d("wcc", "onResume: ");
}

@Override
protected void onRestart() {
super.onRestart();
Log.d("wcc", "onRestart: ");
}

三.运行结果展示

 

四.Gitee仓库源码

 

https://github.com/mostimacc/Work2.git

posted @ 2022-10-21 18:40  ava群青  阅读(143)  评论(0)    收藏  举报