Android Studio开发,四大组件之Activity的带参跳转

Android

书接上文,在上次瀑布流展示联系人的基础上,对每个imageButton中添加activity跳转.展示联系人详情

我们需要,新建activity,熟悉组件activity的生命周期,activity的带参数跳转

一.

新建activitymain2,并将其设为起始activity

   <activity
            android:name=".MainActivity2"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

然后添加跳转按钮

java文件代码

public class MainActivity2 extends AppCompatActivity {
    Button mybutton;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        Log.d("lifeline",this.getLocalClassName()+"创建");
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        jumpTomain();
    }

    @Override
    protected void onStart() {
        Log.d("lifeline",this.getLocalClassName()+"start");
        super.onStart();
    }

    @Override
    protected void onStop() {
        Log.d("lifeline",this.getLocalClassName()+"停止");
        super.onStop();
    }
    public void jumpTomain(){
        mybutton=findViewById(R.id.juptomain);

        mybutton.setOnClickListener(new myonclicklistener());



    }
    class myonclicklistener implements View.OnClickListener {
        @Override
        public void onClick(View v) {
            Intent intent=new Intent();
            //通过intent对象调用setclass设定源activity和目标activity
            intent.setClass(MainActivity2.this,MainActivity.class);
            MainActivity2.this.startActivity(intent);
            //加入如下代码前面一个activity跳转后会被kill掉
             MainActivity2.this.finish();
        }
    }
}

此处可以在logcat中查看生命周期
在这里插入图片描述

在这里插入图片描述
点击之后跳转至微信页面
在这里插入图片描述
之后再联系人页面中为imagebutton绑定监听事件,注意在adapter中创建
附上更新后的adapter代码

 public int getItemCount() {
        return data.size();
    }
    public class myviewholder extends RecyclerView.ViewHolder {
        ImageButton m;
        TextView name,number,type;
        public myviewholder(@NonNull View itemView) {
            super(itemView);
            m=itemView.findViewById(R.id.peoimg);
            name=itemView.findViewById(R.id.contactname);
            number=itemView.findViewById(R.id.contactnumber);
            type=itemView.findViewById(R.id.contacttype);
            //m.setOnClickListener(new MainActivity.myonclicklistener());
            m.setOnClickListener(new myonclicklistener());
        }
    }
    class myonclicklistener implements View.OnClickListener {
        @Override
        public void onClick(View v) {
            Intent intent=new Intent();
            //通过intent对象调用setclass设定源activity和目标activity
            intent.setClass(context,MainActivity3.class);

            ArrayList<String> m=new ArrayList<>();
            for (HashMap<String,Object> x:data
                 ) {
                m.add(x.get("name").toString());
            }
            System.out.println(m.toString());
            intent.putExtra("data",m);
            intent.putExtra("test","hhh");
            context.startActivity(intent);
            //加入如下代码前面一个activity跳转后会被kill掉
            //MainActivity3.this.finish();
        }
    }

利用intent带参传递方法putextra,利用键值对的形式传递数据
然后新建activity3接受数据
activity3代码

public class MainActivity3 extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main3);
        Intent intent = getIntent();

        ArrayList<String> data = intent.getStringArrayListExtra("data");
        System.out.println(intent.getStringExtra("test"));
        TextView viewById = findViewById(R.id.names);
        viewById.setText(data.toString());
    }
    @Override
    protected void onStart() {
        Log.d("lifeline",this.getLocalClassName()+"start");
        super.onStart();
    }

    @Override
    protected void onStop() {
        Log.d("lifeline",this.getLocalClassName()+"停止");
        super.onStop();
    }
}

在此处查看所有联系人名
在这里插入图片描述
在这里插入图片描述
可见create方法在start方法之前调用
码云代码仓库地址

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值