Android 之路28---四大组件之Activity
2018-01-22 10:27
375 查看
导读
1.Activity的介绍即要素2.xml语言的简介即与html语言的区别
3.Activity与view
4.多个activity以及跳转
5.不同Activity之间的数据交流
6.Activity的生命周期
Activity的介绍即要素
Manifest.xml文件中决定了MainActivity首先被执行,然后MainActivity中又决定调用哪个layout
xml语言的简介即与html语言的区别
Activity与view
在xml(layout)文件中的控件,在activity都可以获取,如(TextView)findViewById(R.id.TextView1)
view中xml属性
修改TextView内容及运用监听器
⚠️在MainActivity中导包的快捷键 alt+回车(layout)activity_main.xml文件
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout 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" tools:context="com.hala.view01.MainActivity"> <TextView android:id="@+id/textview01" android:layout_width="356dp" android:layout_height="78dp" android:gravity="center" android:text="Hello World!" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_bias="0.502" tools:layout_editor_absoluteY="201dp" /> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button" tools:layout_editor_absoluteX="148dp" tools:layout_editor_absoluteY="300dp" /> </android.support.constraint.ConstraintLayout>
MainActivity.java文件
package com.hala.view01; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; public class MainActivity extends AppCompatActivity { private TextView textView; //监听器:1.定义Button对象 private Button button; private int sum=0; //监听器:4.定义ButtonListener对象 private ButtonListener buttonListener; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //此处就是通过️向下转型获取了textview01 //注意:这句话一定要写在setContentView后边 textView=(TextView)findViewById(R.id.textview01); //在代码中动态修改一个TextView的内容的方法 textView.setText("hello,Emilia Clarke"); //监听器:2.获取button对象 button=(Button)findViewById(R.id.button); //监听器:5.生成监听器对象,并为按钮添加监听器 buttonListener=new ButtonListener(); button.setOnClickListener(buttonListener); } //监听器:3.创建监听器的内部类并重写OnClick方法 //注意这里实现的OnClickListener要是View包里的 class ButtonListener implements View.OnClickListener{ @Override public void onClick(View v) { sum++; textView.setText("当前点击次数为:"+sum); } } }
显示结果
不同Activity之间的数据交流
activity1的布局文件<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout 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" tools:context="com.hala.view01.MainActivity"> <Button android:id="@+id/bt1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="8dp" app:layout_constraintRight_toRightOf="parent" android:layout_marginLeft="8dp" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintBottom_toBottomOf="parent" android:layout_marginBottom="8dp" app:layout_constraintTop_toTopOf="parent" android:layout_marginTop="8dp" android:text="跳转到第二个页面" android:onClick="click"/> </android.support.constraint.ConstraintLayout>
activity1的java文件
package com.hala.view01; import android.content.DialogInterface; import android.content.Intent; import android.graphics.Color; import android.icu.util.Calendar; import android.os.Build; import android.os.Bundle; import android.support.annotation.IdRes; import android.support.annotation.RequiresApi; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.ArrayAdapter; import android.widget.Toast; public class MainActivity extends AppCompatActivity { public static final String KEY = "key"; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } private void initView(){ findViewById(R.id.bt1).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { final Intent intent = new Intent(MainActivity.this, Main2Activity.class); //这里可以传很多类型,并且可以调用R包里的内容 intent.putExtra(KEY, "Emilia"); intent.putExtra("key2",getString(R.string.myLove)); //这里是不需要第二个页面返回数据使用得方法 //startActivity(intent); //这里是需要第二个页面返回数据使用得方法 startActivityForResult(intent,234); //234是requesrCode 请求码 /* 第二种传值的方法 final Intent intent = new Intent(MainActivity.this, Main2Activity.class); Bundle bundle=new Bundle(); bundle.putString(KEY,"Emilia"); bundle.putInt("key2",2); intent.setExtra(KEY,bundle); */ } }); } /** * * @param requestCode 请求码 就是页面一的234 * @param resultCode 结果码 就是页面二的1 * @param data 数据 就是页面二的Intent (it) */ @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if(requestCode==234 && resultCode==1){ if(data!=null){ setTitle(data.getStringExtra("key")); } } } }
activity2的布局文件
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout 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" tools:context="com.hala.view01.Main2Activity"> <Button android:id="@+id/bt2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button" app:layout_constraintTop_toTopOf="parent" android:layout_marginTop="8dp" app:layout_constraintBottom_toBottomOf="parent" android:layout_marginBottom="8dp" android:layout_marginLeft="8dp" app:layout_constraintLeft_toLeftOf="parent" android:layout_marginRight="8dp" app:layout_constraintRight_toRightOf="parent" /> </android.support.constraint.ConstraintLayout>
activity2的java文件
package com.hala.view01; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; public class Main2Activity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); Button button = (Button) findViewById(R.id.bt2); if(getIntent()!=null){ String value=getIntent().getStringExtra(MainActivity.KEY); button.setText(value); /* 第二种获得值的方法 if(getIntent()!=null){ Bundle bundle=getIntent().getBundleExtra(MainActivity.KEY); if(bundle!=null){ String value=bundle.getString(MainActivity.KEY); button.setText(value); } } */ } button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent it=new Intent(); it.putExtra("key","Neymar.JR"); //第一个参数:resultCode结果码 //第二个参数:传回的intent setResult(1,it); //用来结束第二个页面的方法 finish(); } }); } }
显示结果
⚠️快捷键
将方法中的参数提取出来的快捷键
startActivity(new Intent(MainActivity.this,Main2Activity.class));
Intent intent = new Intent(MainActivity.this, Main2Activity.class); startActivity(intent);
command+alt+v
将一个字符串变成一个常量
intent.putExtra("key","emilia");
public static final String KEY = "key"; ... intent.putExtra(KEY,"emilia");
command+alt+c
多个activity以及跳转
package com.hala.view01; import android.content.Intent; import android.icu.util.Calendar; import android.os.Build; import android.os.Bundle; import android.support.annotation.IdRes; import android.support.annotation.RequiresApi; import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.ImageView; import android.widget.RadioButton; import android.widget.RadioGroup; import android.widget.RatingBar; import android.widget.SeekBar; import android.widget.TextView; import android.widget.TimePicker; import android.widget.Toast; import android.widget.ToggleButton; public class MainActivity extends AppCompatActivity { private Button button; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_hala1); button=(Button)findViewById(R.id.bt); button.setOnClickListener(new buttonLisener()); } class buttonLisener implements View.OnClickListener{ @Override public void onClick(View v) { Intent it=new Intent(); it.setClass(MainActivity.this,Main2Activity.class); startActivity(it); } } }
显示结果
Activity的生命周期
第一个流程
启动一个页面后onCreate()->onStart()->onResume()
返回
onPause()->onStop()->onDestroy()
第二个流程
启动一个页面后,又触发一个页面,遮挡但并未完全盖住页面启动
onCreate()->onStart()->onResume()
触发Dialog
onPause()
撤回Dialog
onResume()
⚠️这里Dialog是指自定义的Dialog,系统的Dialog不会不会走这个流程,而会走第一个流程
第三个流程
启动一个页面后又启动一个页面,完全遮挡住原来的页面启动第一个页面
onCreate()->onStart()->onResume()
启动第二个页面
onPause()->onStop()
又重新回到第一个页面
onRestart()->onStart()->onResume()
⚠️图中左边一个流程是在内存不够用时发生的
流程补充
1.当用户按返回键时会调用系统中的onBackPressed()2.关于onSaveInstanceState()的使用
@Override protected void onSaveInstanceState(Bundle outState){ super.onSaveInstanceState(outState); outState.putString("key","Emilia Clarke"); } //此方法是用来在Activity被销毁时存储数据用的,以便下次在重新调用 //这里是以键值对的形式存放数据的 //put后边的类型不止是String类型,其他类型也可以 //下次调用该Activity时,可以在onCreate()方法中获取存储的信息 @Override protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); ... String value=savesInstanceState.getString("key"); //用键值读取存储的信息 }
相关文章推荐
- Android学习之路——Android四大组件之activity(一)
- Android学习之路——Android四大组件之activity(二)数据的传递
- Android学习之路--四大组件--Activity
- Android学习之路——Android四大组件之activity(二)数据的传递
- Android之四大组件之一-Activity(二)
- Android四大组件之Activity
- android四大组件-Activity
- Android四大组件之Activity的介绍
- Android四大组件之Activity的生命周期
- Android 四大组件之 Activity(一)
- Android学习之路--四大组件--ContentProvider
- Android基础——四大组件之Activity
- Android四大核心组件——Activity活动
- Android四大组件-Activity
- Android四大组件之Activity
- Android四大组件之Activity总结
- Android第二讲——Intent、四大组件(Activity、BroadcastReceiver、ContentProvider、Service(IntentService))
- Android四大组件Activity、 Service、 BoardcastReceiver、ContentProvider的配置
- 【Android基础入门〖3〗】四大组件之Activity
- Android四大组件之Activity