一、
安卓需要在AndroidManifest.xml注册一个活动,如果在这个文件中没有注册,则这个活动将无法运行
该注册代码为

    //对MainActivity的注册                                            

二、
Android.gradle使用了基于groovy的特定领域语言(DSL)来声明项目设置。

apply plugin: 'com.android.application'android {    compileSdkVersion 26    defaultConfig {        applicationId "com.example.ewewwfef.myapplication6"        minSdkVersion 25   //用于指定兼容最低的android版本        targetSdkVersion 26  //表示在指定的版本上经过了充分的1测试        versionCode 1        versionName "1.0"// versionCode    ersionName 项目版本号与版本名,在之后程序安装的过程中十分的重要        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"    }    buildTypes {//这其中还包括release包,而release包可以忽略不写。        release {//对于指定代码进行混淆的内容            minifyEnabled false            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        }    }}

三、
自己手动创建activity这时候选择new empty activity
勾选backwords compatibility是自动向下兼容
上面两个选项分别是自动生成布局和选择当前活动为主活动。

点击finish则自动生成带吗如下

package com.example.ewewwfef.myapplication;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;public class FirstActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);    }}

其中声明了onCreate方法,我们也可以在其中加入我们自己的逻辑
四、
注册主活动

                        

五、
在活动中使用Toast
代码如下

public class FirstActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.first_layout);        Button button1=(Button)findViewById(R.id.button_1);        button1.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                Toast.makeText(FirstActivity.this,"you clicked button1",                        Toast.LENGTH_SHORT).show();            }        });    }}

运行后会弹出黑框

public void onClick(View view)  {      finish();  }

将onClick函数中的内容改为finish()则点击按钮之后该活动将被销毁。
六、
使用intent在活动之间穿梭
①首先是使用显示intent的穿梭
Intent的头文件为android.content.Intent;
以下为调用intent的代码

public void onClick(View view)  {      Intent intent=new Intent(FirstActivity.this,SecondActivity.class);      startActivity(intent);  }

②隐式intent的穿梭
AndroidMainfest中的代码如下

                        

调用intent的代码如下

public void onClick(View view)   {       Intent intent=new Intent("com.example.activitytest.ACTION_START");       startActivity(intent);   }

③隐式intent穿梭的扩展内容
调用intent的代码如下

public void onClick(View view){  /*  Intent intent=new Intent(Intent.ACTION_VIEW);    intent.setData(Uri.parse("http://www.baidu.com"));*///扩展到www.baidu.com    Intent intent=new Intent(Intent.ACTION_DIAL);    intent.setData(Uri.parse("tel:10086"));//扩展到拨打10086    startActivity(intent);}

七、
Menu菜单的使用
在res文件夹下新建menu文件夹,在menu文件夹下新建menu resource文件main.xml并在该文件中添加如下代码

并在firstactivity.java中添加如下代码

public boolean onCreateOptionsMenu(Menu menu) {    getMenuInflater().inflate(R.menu.main,menu);    return true;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {//按钮选择事件    switch (item.getItemId())    {        case R.id.add_item:            Toast.makeText(this,"You clicked add",Toast.LENGTH_SHORT).show();            break;        case R.id.remove_item:            Toast.makeText(this,"You clicked remove",Toast.LENGTH_SHORT).show();            break;        default:    }    return true;}

这个代码再次使用了toast,如果点击按钮则会产生黑框
onOptionsItemSelected函数是用来判断我们点击了哪一个选项
onCreateOptionsMenu函数是用来创建menu对象,inflate的两个参数分别是菜单格式的原文件和菜单格式将要应用的对象
八、向下一个活动传递数据
FirtActivity中的代码

public void onClick(View view) {    String data="Hello seccondActivity";    Intent intent=new Intent(FirstActivity.this,SecondActivity.class);    intent.putExtra("extra_data",data);    startActivity(intent);}

secondActivity中的代码

Intent intent=getIntent();String data=intent.getStringExtra("extra_data");Log.d("SecondActivity",data);

该段代码在onCreate()函数中
运行该段代码后,点击目标按钮将会在logcat中输出hello secondActivity

九、返回数据给上一个活动
SecondActivity代码

public void onClick(View view){    Intent intent=new Intent();    intent.putExtra("data_return","Hello FirstActivity");    setResult(RESULT_OK,intent);    finish();}

firstActivity中的代码

protected  void onActivityResult(int requestCode,int resultCode,Intent data){    switch(requestCode)    {        case 1:            if(requestCode==RESULT_OK)            {                String returnedData=data.getStringExtra("data_return");                Log.d("FirstActivity",returnedData);            }            break;        default:    }}

onCreate函数中的代码

public void onClick(View view) {    String data="Hello seccondActivity";    Intent intent=new Intent(FirstActivity.this,SecondActivity.class);    intent.putExtra("extra_data",data);   startActivityForResult(intent,1);}

十、活动的生存周期
Activity类中定义了7个回调方法,覆盖了活动生命周期的每一个环节,其分别为

onCreate(),onStart(),onResume(),onPause(),onStop(),onDestroy(),onRestart()

这七个方法除了onRestart()方法,其他都是两两相对的,可以分为三种生存期
① 完整生存期
onCreate(),onDestroy()之间
② 可见生存期
onStart(),onStop()之间
③ 前台生存期
onResume(),onPause()之间

十一、活动的生存周期开发实践
①首先按照书上的代码编写时android:theme="@android:style/Theme.Dialog"
若在AndroidManifest中有此段代码,则运行时会报错
这句代码应该是第二个活动不完全遮住主活动的意思
这样onStop()函数不会执行,但是这个代码执行会有错误。

②在onCreate通过savedInstanceState保存活动中的数据

if(savedInstanceState!=null){    String tempDate=savedInstanceState.getString("data_key");}

而且需要在类中定义以下函数

protected void onSaveInstanceState(Bundle outState){    super.onSaveInstanceState(outState);    String tempData="Something you just typed";    outState.putString("data_key",tempData);}

③ 活动的启动模式
在androidManifest.xml添加android:launchMode=”模式名称”
默认启动模式为Standard,下面列出所有的启动模式
Standard、SingleTop、SingleTask、SingleInstance
这几种模式的区别我没有详细看

④ 如何知晓当前是哪一个活动
要解决这个问题可以创建一个BaseActivity类(注:该类是写在各个活动所在的文件夹下的),这个类中没有活动实例,所以只需要创建一个.java文件,而且该类不需要再AndroidManifest.xml中注册
该类需要继承AppCopatActivity类
这样只需要重写onCreate()函数,让子类活动继承这个类便可以了
该类的书写方法

Protected void onCreate(Bundle savedInstanceState) {super.onCreate();Log.d(“BaseActivity”,getClass.getSimpleName());}

⑤ 随时随地的退出程序
需要先写一个ActivityCollector类,类中代码如下所示

public class ActivityCollector {    public  static List activities =new ArrayList<>();    public static void addActivity(Activity activity)    {        activities.add(activity);    }    public static void removeActivity(Activity activity)    {        activities.remove(activity);    }    public static void finishAll()    {        for(Activity activit:activities)        {            if(!activit.isFinishing())                activit.finish();        }    }}

然后BaseActivity类中重写onCreate方法

protected void onCreate(Bundle savedIntenceState){    super.onCreate(savedIntenceState);    Log.d("BaseActivity",getClass().getSimpleName());    ActivityCollector.removeActivity(this);}@Overrideprotected  void onDestroy(){    super.onDestroy();    ActivityCollector.removeActivity(this);}

最后在进程BaseActivity的活动中的onClick书写如下代码

ActivityCollector.finishAll();

更多相关文章

  1. Android(安卓)获取当前时间及时间戳的互换
  2. Android(安卓)Property
  3. android 卸载程序、清除数据、停止服务用法
  4. 终结篇:Android(安卓)startActivity原理分析(基于Android(安卓)8.
  5. Android回调接口简单理解
  6. Android(安卓)Camera 模块分析
  7. android 通话记录插入 短信插入 联系人插入
  8. android 按键声音
  9. android 数据库 sqlite数据类型(时间 日期 double等)

随机推荐

  1. PHP方法的返回值示例详解
  2. 一个简单的留言板
  3. dom元素的增删改操作
  4. PHP中国际化的字符串排序和比较对象详解
  5. js中的firstElementChild,lastElementChil
  6. 那些前端开发必不可少的生产力工具
  7. js的自定义dataset对象 ,js操作css, js中
  8. 如何让PHP的代码更安全
  9. Opencv创建车牌图片识别系统方法详解
  10. 解析PHP观察者模式Observer