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方法之前调用
码云代码仓库地址