目录
1.设计目标
1、请根据课程内容实现对Activity生命周期的理解,使用log展示生命周期的状态变化;
2、根据博客:https://www.jianshu.com/p/c4cfe38a91ed的内容(进阶篇中的 “点击”),在前次作业的基础上增加列表项的单项点击功能,具体要求是:新建一个新的activity1,recycleview的某一项点击后跳转到这个新的activity1。如:点击新闻列表会跳转到新闻详情页面;
3、实现最新的activityforresult功能,具体要求如下:新建一个新的activity2,在activity1上添加按钮可收到activity2的回传值。如:新闻详情页面中点击收藏按钮可显示当前的收藏数量为N。
2.功能说明
1、点击任何一个recycleview列表项即name项进入到浏览界面
2、点击访问回退后会出现访问次数
3.代码解析
1、首先在mainactivity和附属页面中重写 onCreate()、onClick()、onDestroy();输出log
public class activity2 extends AppCompatActivity {
public static int i=0;
private static final String TAG = "Activity2";
@Override
protected void onCreate(Bundle savedInstanceState) {
Log.d("yjj",TAG+" create");
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_2);
Button buttonQuit=findViewById(R.id.buttonQuit);
i++;
String s=Integer.toString(i);
buttonQuit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.d("yjj",TAG+"回传值"+s);
Intent intent=new Intent();
intent.putExtra("data_return",s);
setResult(RESULT_OK,intent);
finish();
}
});
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.d("yjj",TAG+" destroyed");
}
}
2、实现最新的activityforresult功能,具体要求如下:新建一个新的activity2,在activity1上添加按钮可收到activity2的回传值。如:微信朋友详情页面中点击浏览按钮可显示当前的浏览次数。
public class activity1 extends AppCompatActivity {
private static final String TAG = "Activity1";
@Override
protected void onCreate(Bundle savedInstanceState) {
Log.d("zll",TAG+" create");
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_1);
TextView backText=findViewById(R.id.backText);
Button buttonCollect=findViewById(R.id.buttonCollect);
ActivityResultLauncher launcher=registerForActivityResult(
new ActivityResultContracts.StartActivityForResult(),
new ActivityResultCallback<ActivityResult>() {
@Override
public void onActivityResult(ActivityResult result) {
if(result.getResultCode()==RESULT_OK){
Log.d("zll",TAG+"接受回传值:data="+
result.getData().getStringExtra("data_return"));
backText.setText("Collected Times:"+result.getData()
.getStringExtra("data_return"));
}
}
});
buttonCollect.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view){
Intent intent=new Intent(activity1.this,activity2.class);
launcher.launch(intent);
}
});
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.d("zll",TAG+" destroyed");
}
}
3.对adapter进行更新
public class MyHolder extends RecyclerView.ViewHolder {
TextView name;
TextView msg;
TextView date;
ImageView imageView;//点击
LinearLayout linearLayout;
public MyHolder(View itemView) {
super(itemView);
name = itemView.findViewById(R.id.textView_name);
msg = itemView.findViewById(R.id.textView_msg);
date = itemView.findViewById(R.id.textView_date);
imageView = itemView.findViewById(R.id.imageView);//点击
linearLayout = itemView.findViewById(R.id.list_root);
}
}
public Adapter(Context context, ArrayList list2) {
this.context = context;
this.list2 = list2;
}
public Adapter() {
}
}
4.运行展示截图
5.小结:
了解各函数对应调用时机onCreate():在Activity创建时调用;onStart():在Activity即将可见时调用;onResume():在Activity获取焦点开始与用户交互时调用,也就是可见时调用onPause():在当前Activity被其他Activity覆盖或锁屏时调用;onStop():在Activity对用户不可见时调用;onDestroy():在Activity销毁时调用;onRestart():在Activity从停止状态再次启动时调用;对各函数重写掌握了相应函数调用顺序,方便对后继AS的学习。