首页 > 其他分享 >Activity的生命周期与跳转

Activity的生命周期与跳转

时间:2022-10-21 20:22:29浏览次数:52  
标签:生命周期 activity Intent result Activity import android 跳转 public

  这次实验主要是理解Activity,实现:新建一个新的activity1,recycleview的某一项点击后跳转到这个新的activity1。如:点击新闻列表会跳转到新闻详情页面;实现最新的activityforresult功能,具体要求如下:新建一个新的activity2,在activity1上添加按钮可收到activity2的回传值。如:新闻详情页面中点击收藏按钮可显示当前的收藏数量为N。

  这次试验我还是在之前的项目上搭建的,并且这次更新也push到了这个仓库:https://github.com/DobyAsa/RechatV2.git

 

  这一次我新建了两个activity,一个是当用户点击列表中的item之后跳转的ItemActivity,在这个activity中,我们将用来显示将来会拿到的数据。另一个是专门用来返回数据的工具activity,这个activity负责返回上一个activity所需要的数据。

 

  其中ItemActivity的布局为:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     xmlns:app="http://schemas.android.com/apk/res-auto"
 4     xmlns:tools="http://schemas.android.com/tools"
 5     android:layout_width="match_parent"
 6     android:layout_height="match_parent"
 7     tools:context=".ItemAcitivity">
 8 
 9     <Button
10         android:id="@+id/infoButton"
11         android:layout_width="wrap_content"
12         android:layout_height="wrap_content"
13         android:text="@string/info_button"
14         app:layout_constraintBottom_toBottomOf="parent"
15         app:layout_constraintEnd_toEndOf="parent"
16         app:layout_constraintStart_toStartOf="parent"
17         app:layout_constraintTop_toTopOf="parent"
18         app:layout_constraintVertical_bias="0.53" />
19 
20     <TextView
21         android:id="@+id/infoView"
22         android:layout_width="wrap_content"
23         android:layout_height="wrap_content"
24         android:paddingLeft="32dp"
25         android:paddingEnd="32dp"
26         app:layout_constraintBottom_toTopOf="@+id/infoButton"
27         app:layout_constraintEnd_toEndOf="parent"
28         app:layout_constraintStart_toStartOf="parent"
29         app:layout_constraintTop_toTopOf="parent" />
30 </androidx.constraintlayout.widget.ConstraintLayout>

  

 

  相应的,我的Activity的代码为:

 1 package com.example.rechatv2;
 2 
 3 import androidx.activity.result.ActivityResult;
 4 import androidx.activity.result.ActivityResultCallback;
 5 import androidx.activity.result.ActivityResultLauncher;
 6 import androidx.activity.result.contract.ActivityResultContracts;
 7 import androidx.appcompat.app.AppCompatActivity;
 8 
 9 import android.content.ClipData;
10 import android.content.Intent;
11 import android.os.Bundle;
12 import android.util.Log;
13 import android.view.View;
14 import android.widget.Button;
15 import android.widget.TextView;
16 
17 public class ItemAcitivity extends AppCompatActivity {
18     private Button mInfoButton;
19     private TextView mInfoView;
20 
21     @Override
22     protected void onCreate(Bundle savedInstanceState) {
23         super.onCreate(savedInstanceState);
24         setContentView(R.layout.activity_item);
25 
26         mInfoButton = findViewById(R.id.infoButton);
27         mInfoView = findViewById(R.id.infoView);
28 
29         mInfoButton.setOnClickListener(new View.OnClickListener() {
30             @Override
31             public void onClick(View view) {
32                 Intent intent = new Intent(ItemAcitivity.this, ResultActivity.class);
33                 test.launch(intent);
34             }
35         });
36     }
37     public ActivityResultLauncher test;
38     {
39         test = registerForActivityResult(
40                 new ActivityResultContracts.StartActivityForResult(),
41                 new ActivityResultCallback<ActivityResult>() {
42 
43                     @Override
44                     public void onActivityResult(ActivityResult result) {
45                         if(result.getResultCode() == 1024){
46                             Log.d("xr", "onActivityResultLauncher...");
47                             mInfoView.setText(result.getData().getStringExtra("Info"));
48                         }
49                     }
50                 });
51     }
52 }

   我的ResultActivity的布局是空的,因为在这次实验中其实也用不到他。主要是用代码

package com.example.rechatv2;

import androidx.appcompat.app.AppCompatActivity;

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

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("Info", "现在我在写实验,我的老师是肖蓉。"+"现在时间是: "+ Calendar.getInstance().getTime());
        setResult(1024, intent);
        finish();
    }
}

  然后我们也要给每个item都加上一个点击事件:

    public void onBindViewHolder(@NonNull ChatViewHolder holder, int position) {
        holder.getChatAvatar().setImageDrawable(localDataset[0].getAvatar());
        holder.getChatName().setText(localDataset[0].getName());
        holder.getLastChatTime().setText(localDataset[0].getLastChatTime());
        holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(context, ItemAcitivity.class);
                context.startActivity(intent);
            }
        });
    }

  OK,到现在为止,我们的功能已经实现完成。下图是演示,“曾浩”是我的一个同学,OK,我们点击他。

  我们就进入到ItemActivity的界面。继续点击get information

 

 

 

 完成。

 

标签:生命周期,activity,Intent,result,Activity,import,android,跳转,public
From: https://www.cnblogs.com/dobyasa/p/16814645.html

相关文章

  • React学习--路由不跳转
    在配置React路由的时候遇到的问题,url跳转了但是页面没有跟着刷新,找了很久没找到问题最后想了想可能是因为index.js的<React.StrictMode>导致的,注释之后就成功了......
  • android Activity的启动流程源码分析
    ActivityThread在handlebindapplication中执行完Application的初始化之后会继续进入到消息循环中接收AMS(activitymanagerservice)启动activity的消息。AMS首先会发送启动......
  • Gradle构建之生命周期
    Gradle是一个框架,作为框架,它负责定义流程和规则。而具体的编译工作则是通过插件的方式来完成的。比如编译Java有Java插件,编译Groovy有Groovy插件,编译AndroidAPP有Android......
  • 吐血整理python数据分析利器pandas的八个生命周期!
    这里从八个pandas的数据处理生命周期,整理汇总出pandas框架在整个数据处理过程中都是如何处理数据的。【阅读全文】也就是从pandas的数据表对象以及数据汇总、数据统计等......
  • 基础篇——三、组件的生命周期
    三、组件的生命周期只有类组件才有生命周期,函数组件没有生命周期1,挂载阶段被创建,执行初始化,并被挂载到dom,完成第一次渲染。依次调用:constructor是es6class的构造方......
  • 路由页面跳转优化
    1.添加全局前置路由守卫 importstorefrom"@/store";importVuefrom"vue";importVueRouterfrom"vue-router";Vue.use(VueRouter);constroutes=[{......
  • Vue生命周期
    Vue生命周期生命周期就是我们从开始创建vue实例到销毁的一个过程,这一过程就叫做生命周期。方便我们在vue的各个阶段对其属性进行操作生命周期示例-----newVue实例化Vu......
  • jsp与jsp之间的跳转----当有一个jsp在WEB-INF下
    不通过action来处理跳转,直接从test.jsp页面跳到WEB-INF下的test1.jsp。我们有时候会试试绝对路径的写法<%=request.getContext()=%>/WEB-INF/test1.jsp,但是还是不行。因为......
  • React:生命周期函数
    生命周期钩子详解定义:在特定的阶段,ne你刚刚自动执行的函数(方法)。componentWillMount:在渲染前调用,在客户端也在服务端。componentDidMount:在第一次渲染后调用,只......
  • Activity生命周期与跳转
    Activity生命周期与跳转新建activity新建ChattingActivity,用作聊天对象的展示页面  ---  参数传递1publicclassChattingActivityextendsAppCompatAct......