作业2:Activity的生命周期与跳转

设计目标:

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

       2、 在之前的作业的基础上增加列表项的单项点击功能,具体要求是:新建一个新的itemactivity,recycleview的某一项点击后跳转到这个新的itemactivity。如:点击新闻列表会跳转到新闻详情页面;

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

功能说明:

        新建一个新的itemactivity,recycleview的某一项点击后跳转到这个新的itemactivity。

public void onBindViewHolder(@NonNull MyViewHolder holder,int position){
    holder.textView.setText(list.get(position));
    holder.textView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(context, ItemActivity.class);
            context.startActivity(intent);
        }
    });
}

        新建一个新的resultactivity,在itemactivity上添加按钮可跳转到resultactivity,但是不跳转页面,仅获得返回值。在itemactivity页面与resultactivity的跳转之间实现对Activity生命周期的理解,使用log展示生命周期的状态变化。

public ActivityResultLauncher test;

{
    test=registerForActivityResult(
            new ActivityResultContracts.StartActivityForResult(),
            new ActivityResultCallback<ActivityResult>() {
                @Override
                public void onActivityResult(ActivityResult result) {
                    if(result.getResultCode()==123){
                        Log.d("wxy","onActivityResultLauncher.........");
                        textView.setText(result.getData().getStringExtra("data"));
                    }

                }
            }
    );
}
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_result);
    Intent intent = getIntent();
    intent.putExtra("data", "...新闻详情...湖北大学体育文化节将于10月23日至25日在校本部与阳逻校区同时举行。"+"\n"+Calendar.getInstance().getTime());
    setResult(123,intent);
    finish();

}

代码解析:

itemactivity.java:

package com.example.mywechat0176;

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

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;

public class ItemActivity extends AppCompatActivity {

    private TextView textView;
    private Button button;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_item);

        textView=findViewById(R.id.itemtextView2);
        button=findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent=new Intent(ItemActivity.this,ResultActivity.class);
                test.launch(intent);
            }
        });
    }

    public ActivityResultLauncher test;

    {
        test=registerForActivityResult(
                new ActivityResultContracts.StartActivityForResult(),
                new ActivityResultCallback<ActivityResult>() {
                    @Override
                    public void onActivityResult(ActivityResult result) {
                        if(result.getResultCode()==123){
                            Log.d("wxy","onActivityResultLauncher.........");
                            textView.setText(result.getData().getStringExtra("data"));
                        }

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

    @Override
    protected void onPause() {
        super.onPause();
        Log.d("wxy","ItemActivity的: onPaues...");
    }

    @Override
    protected void onStop() {
        super.onStop();
        Log.d("wxy","ItemActivity的: onStop...");
    }
    @Override
    protected void onResume() {
        super.onResume();
        Log.d("wxy","ItemActivity的: onRsume...");
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.d("wxy","ItemActivity的: onDestory...");
    }
}

resultactivity.java:

package com.example.mywechat0176;

import android.content.Intent;
import android.os.Bundle;
import android.util.Log;

import androidx.appcompat.app.AppCompatActivity;

import java.util.Calendar;

public class ResultActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_result);
        Intent intent = getIntent();
        intent.putExtra("data", "...新闻详情...湖北大学体育文化节将于10月23日至25日在校本部与阳逻校区同时举行。"+
                "\n"+Calendar.getInstance().getTime());
        setResult(123,intent);
        finish();

    }

    @Override
    protected void onStart(){
        super.onStart();
        Log.d("wxy","ResultActivity。。。onStart");
    }

    @Override
    protected void onPause() {
        super.onPause();
        Log.d("wxy","ResultActivity。。。onPaues");
    }

    @Override
    protected void onStop() {
        super.onStop();
        Log.d("wxy","ResultActivity。。。onStop");
    }
    @Override
    protected void onResume() {
        super.onResume();
        Log.d("wxy","ResultActivity。。。onRsume");
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.d("wxy","ResultActivity。。。onDestory");
    }


}

 Myadapter.java:

package com.example.mywechat0176;

import android.content.Context;
import android.content.Intent;
import android.view.ContentInfo;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

import java.util.List;

//<Myadapter.MyViewHolder>表示使用自己的adapter类
public class Myadapter extends RecyclerView.Adapter<Myadapter.MyViewHolder> {
    private View view;
    private Context context;
    private List<String> list;

    public Myadapter(Context context,List<String> list) {
        this.context = context;
        this.list = list;
    }

    @NonNull
    @Override
    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent,int viewType){
        view= LayoutInflater.from(context).inflate(R.layout.item,parent,false);
        MyViewHolder holder=new MyViewHolder(view);
        return holder;
    }
    //处理item.xml,返回二级holder,LayoutInflater压缩器,把xml压缩成view
    @Override
    public void onBindViewHolder(@NonNull MyViewHolder holder,int position){
        holder.textView.setText(list.get(position));
        holder.textView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(context, ItemActivity.class);
                context.startActivity(intent);
            }
        });
    }
    //数据绑定data-holder。position,数据位置
    @Override
    public int getItemCount(){return list.size();}
    //item行,限定一次性显示几行,RecyclerView显示多少行
    public class MyViewHolder extends RecyclerView.ViewHolder{
        private TextView textView;
        private ImageView imageView;
        public MyViewHolder(View itemview){
            super(itemview);
            textView=(TextView) itemview.findViewById(R.id.textView);
            imageView=(ImageView) itemview.findViewById(R.id.imageView);
        }
    }

}

运行展示截图:

 

源码仓库地址:https://gitee.com/wu-xin-yi/wxygit/tree/master/AS%E4%BD%9C%E4%B8%9A2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值