目录
介绍
基于上次完成的类微信页面设计,本期将创建新的Activity,分析Activity的生命周期,以及实现Activity的跳转。
Activity的生命周期
在上一次作业中,完成了RecycleView对通信录的设计,这次,将实现点击RecycleView中的某一项后,跳转到新的Activity中,(如在通讯录列表里,点击某一位朋友,将进入这位朋友的详细页面中);
创建一个新的Activity,命名为Activity1,并绑定activity1.xml(xml文件在后面设计),并重写onStart(),onPause(),onStop()等方法,在里面使用Log展示其生命周期。同理,在MainActivity中也使用Log就能展示当存在两个或多个Activity跳转时其生命周期的变化。
接下来展示Activity的生命周期:
1.当程序启动时,MainAcivity调用onstart启动
2.当点击,进行Activity跳转时,MainActivity暂停,Activity1启动,MainActivity停止;
3.当返回主MainActivity时,Activity1完成并暂停,待MainActivity启动后,停止并销毁。
Activity的跳转
1.Activity1页面设计
首先,来完成Activity1的页面设计,要设计一个微信朋友的主页面,如下图,xml的代码如下,这里不再详细讲述;
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="80dp"
android:orientation="horizontal">
<ImageView
android:id="@+id/imageView6"
android:layout_width="74dp"
android:layout_height="match_parent" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/textView7"
android:layout_width="match_parent"
android:layout_height="38dp"
android:paddingLeft="20dp"
android:text="微信名"
android:textColor="@color/black"
android:textSize="20dp" />
<TextView
android:id="@+id/textView15"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="微信号"
android:textColor="@color/black"
android:paddingLeft="20dp"
android:paddingTop="10dp"
android:textSize="15dp"/>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="110dp"
android:orientation="vertical">
<TextView
android:id="@+id/textView9"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:paddingLeft="20dp"
android:paddingTop="10dp"
android:text="朋友圈"
android:textColor="@color/black"
android:textSize="20dp" />
<TextView
android:id="@+id/textView10"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:paddingLeft="20dp"
android:paddingTop="10dp"
android:text="更多信息"
android:textColor="@color/black"
android:textSize="20dp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="90dp"
android:orientation="horizontal">
<ImageView
android:id="@+id/imageView7"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:adjustViewBounds="true"
android:maxWidth="50px"
android:maxHeight="50px"
android:paddingLeft="150dp"
app:srcCompat="@drawable/wechat" />
<TextView
android:id="@+id/textView16"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:paddingTop="25dp"
android:paddingLeft="20dp"
android:textSize="25dp"
android:textColor="@color/black"
android:text="发消息" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="90dp"
android:orientation="horizontal">
<ImageView
android:id="@+id/imageView9"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:adjustViewBounds="true"
android:maxWidth="50px"
android:maxHeight="50px"
android:paddingLeft="130dp"
app:srcCompat="@drawable/view" />
<TextView
android:id="@+id/textView17"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="音视频通话"
android:paddingTop="25dp"
android:paddingLeft="5dp"
android:textColor="@color/black"
android:textSize="25dp"/>
</LinearLayout>
</LinearLayout>
2.item点击
在Adapter中写接口,然后在Activity或Fragment上实现接口中定义的方法
因为通讯录页面是通过Fragment展示的,所以直接在这里实现方法;
Activity跳转
3.activityforresult回传值
新建一个Activity2,在Activity1上添加一个按钮可收到Activity2 的回传值。
在Activity1中添加一个按钮,用于跳转Activity2,添加一个TwxtView用于接收Activity2返回时传回的值。因为需要返回值,所以这里将StartActivity改为使用startActivityForResult。
public class Activity1 extends Activity {
private TextView textView6;
private Button button;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity1);
button=(Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent=new Intent(Activity1.this,Activity2.class);
startActivityForResult(intent,1);
}
});
textView6=(TextView) findViewById(R.id.textView6);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode==1&&resultCode==3){
String result = data.getStringExtra("result");
textView6.setText(result);
在Activity2中添加一个EditText和button,在EditText中写入值后点击button将值传回至Activity1的TextView中;
public class Activity2 extends Activity {
private EditText text;
private Button button;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity2);
text = (EditText) findViewById(R.id.editTextTextPersonName);
button=(Button) findViewById(R.id.button2);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent=new Intent();
intent.putExtra("result",text.getText().toString());
setResult(3,intent);
finish();
}
});
}
}
Activity 跳转及传值