• 3)在回调方法当中实现逻辑

*/

public class MainActivity extends Activity implements OnClickListener {

private EditText et_main_message;

private Button btn_main_start1;

private Button btn_main_start2;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

//初始化视图对象

et_main_message = (EditText) findViewById(R.id.et_main_message);

btn_main_start1 = (Button) findViewById(R.id.btn_main_start1);

btn_main_start2 = (Button) findViewById(R.id.btn_main_start2);

//设置点击监听

btn_main_start1.setOnClickListener(this);

btn_main_start2.setOnClickListener(this);

}

@Override

public void onClick(View v) {//v就是发生事件的视图对象(操作的视图)

if(v==btn_main_start1){

Toast.makeText(this, “一般启动”, 0).show();

//创建Intent对象(显示)

Intent intent = new Intent(this, SecondActivity.class);

//通过intent额外携带数据

String message = et_main_message.getText().toString();

intent.putExtra(“MESSAGE”,message);

//启动Activity

startActivity(intent);

}else if(v==btn_main_start2){

Toast.makeText(this, “带回调的启动”, 0).show();

}

}

}

在SecondActivity当中

1)得到intent对象

2)通过intent对象读取额外数据

3)显示到EditText当中

package com.itzheng.lo2_activity;

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.view.Menu;

import android.view.MenuItem;

import android.widget.EditText;

public class SecondActivity extends Activity {

private EditText et_second_message;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_second);

et_second_message = (EditText) findViewById(R.id.et_second_message);

//得到Intent对象

Intent intent = getIntent();

//通过intent读取额外数据

String message = intent.getStringExtra(“MESSAGE”);

//显示到EditText

et_second_message.setText(message);

}

}

测试

[](()3)实现一般返回

a、在显示Second界面的时候,Main界面其实还在,只是被覆盖了

b、关闭当前界面(回到上一个界面):finish()

修改activity_second.xml

修改SecondActivity类

[](()4)实现带回调的启动与结果返回

在MainActivity当中

else if (v == btn_main_start2) {

Toast.makeText(this, “带回调的启动”, 0).show();

// 创建Intent对象(显示)

Intent intent = new Intent(this, SecondActivity.class);

// 通过intent额外携带数据

String message = et_main_message.getText().toString();

intent.putExtra(“MESSAGE”, message);

// 带回调启动Activity

int requestCode = 2;// 请求码

startActivityForResult(intent, requestCode);

}

}

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

// TODO Auto-generated method stub

// 判断code

if (requestCode == 2 && resultCode == 3) {

// 从data当中取出数据

String result = data.getStringExtra(“RESULT”);

// 显示出来

et_main_message.setText(result);

}

}

在SecondActivity

public void back2(View v){

//保存结果,准备一个带额外数据的intent对象

Intent data = new Intent();

data.putExtra(“RESULT”, et_second_message.getText().toString());

int resultCode = 3;//结果码

//设置返回的结果

setResult(resultCode,data);

//关闭当前界面

finish();

}

测试

[](()(5)启动一个Activity的流程图

[](()2、Activity的生命周期

[](()(1)安卓界面的四种状态

[](()(2)Activity的方法

[](()(3)测试应用理解上诉方法

/*

  • 1)界面从“死亡”—>“运行”

  • 2)界面从“运行”—>“死亡”

  • 3)界面从“运行”—>“停止”

  • 4)界面从“停止”—>“运行”

  • 5)界面从“运行”—>“暂停”

  • 6)界面从“暂停”—>“运行”

*/

public class MainActivity extends Activity {

public MainActivity() {

Log.e(“TAG”, “MainActivity()”);

}

@Override

protected void onCreate(Bundle savedInstanceState) {

Log.e(“TAG”, “onCreate()”);

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

}

@Override

protected void onStart() {

Log.e(“TAG”, “onStart()”);

super.onStart();

}

@Override

protected void onResume() {

Log.e(“TAG”, “onResume()”);

super.onResume();

}

@Override

protected void onPause() {

Log.e(“TAG”, “onPause()”);

super.onPause();

}

@Override

protected void onStop() {

Log.e(“TAG”, “onStop()”);

super.onStop();

}

@Override

protected void onDestroy() {

Log.e(“TAG”, “onDestroy()”);

super.onDestroy();

}

@Override

protected void onRestart() {

Log.e(“TAG”, “onRestart()”);

super.onRestart();

}

}

  • 1)界面从“死亡”—>“运行”:将程序运行即可

创建对象–>创建Activity–>开始运行Activity–>正在运行Activity

  • 2)界面从“运行”—>“死亡”

点击返回键

暂停(休眠)–>停止–>销毁

  • 3)界面从“运行”—>“停止”

点击HOME

暂停–>停止

  • 4)界面从“停止”—>“运行”

长按HOME键

从新开始–>开始–>正在运行

  • 5)界面从“运行”—>“暂停”

a. 修改布局activity_main界面

添加一个按钮

<Button

android:id=“@+id/button1”

android:layout_width=“wrap_content”

android:layout_height=“wrap_content”

android:layout_centerHorizontal=“true”

android:layout_centerVertical=“true”

android:text=“启动界面二”

android:onClick=“startSecond”

/>

b.在MainActivity类当中添加方法

public void startSecond(View v){

startActivity(new Intent(this,SecondActivity.class));

}

c.创建SecondActivity类

d.修改activity_second.xml

e.修改AndroidManifest.xml

f.运行

暂停

  • 6)界面从“暂停”—>“运行”

点空白处

运行

[](()3、Activity的TaskStack

  • 只有最上面的任务栈的栈顶的Activity才能显示在窗口当中

[](()4、Activity的launchMode

[](()5、通过创建一个工程来掌握上诉的方法以及内容

创建MainActivity,SecondActivity,

ThreeActivity以及对应的布局文件activity_main.xml,activity_second.xml,activity_three.xml

[](()(1)standard模式

[](h 《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》无偿开源 徽信搜索公众号【编程进阶路】 ttps://code100.blog.csdn.net/article/details/111649778)MainActivity

public class MainActivity extends Activity {

public MainActivity(){

Log.e(“TAG”, “MainActivity()”);

}

@Override

protected void onCreate(Bundle savedInstanceState) {

Log.e(“TAG”, “onCreate()”);

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

}

public void startSecond(View v) {

startActivity(new Intent(this, SecondActivity.class));

}

public void startFirst(View v) {

startActivity(new Intent(this, MainActivity.class));

}

}

[](()activity_main.xml

<LinearLayout xmlns:android=“http://schemas.android.com/apk/res/android”

android:layout_width=“fill_parent”

android:layout_height=“fill_parent”

android:orientation=“vertical” >

<TextView

android:id=“@+id/textView1”

android:layout_width=“wrap_content”

android:layout_height=“wrap_content”

android:text=“界面1111111111” />

<Button

android:id=“@+id/button1”

android:layout_width=“wrap_content”

android:layout_height=“wrap_content”

android:text=“启动界面2”

android:onClick=“startSecond” />

<Button

android:id=“@+id/button2”

android:layout_width=“wrap_content”

android:layout_height=“wrap_content”

android:text=“启动界面1”

android:onClick=“startFirst” />

[](()SecondActivity

public class SecondActivity extends Activity {

public SecondActivity(){

Log.e(“TAG”, “SecondActivity()”);

}

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_second);

}

public void startThree(View v) {

startActivity(new Intent(this, ThreeActivity.class));

}

public void startFirst(View v) {

startActivity(new Intent(this, MainActivity.class));

}

}

[](()activity_second.xml

<LinearLayout xmlns:android=“http://schemas.android.com/apk/res/android”

android:layout_width=“fill_parent”

android:layout_height=“fill_parent”

android:orientation=“vertical” >

<TextView

android:id=“@+id/textView1”

android:layout_width=“wrap_content”

android:layout_height=“wrap_content”

android:text=“界面22222222222” />

<Button

android:id=“@+id/button1”

android:layout_width=“wrap_content”

android:layout_height=“wrap_content”

android:text=“启动界面3”

android:onClick=“startThree” />

<Button

android:id=“@+id/button2”

android:layout_width=“wrap_content”

android:layout_height=“wrap_content”

android:text=“启动界面1”

android:onClick=“startFirst” />

[](()ThreeActivity

public class ThreeActivity extends Activity {

public ThreeActivity(){

Log.e(“TAG”, “ThreeActivity()”);

}

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_three);

}

}

[](()activity_three.xml

<RelativeLayout xmlns:android=“http://schemas.android.com/apk/res/android”

xmlns:tools=“http://schemas.android.com/tools”

android:layout_width=“match_parent”

android:layout_height=“match_parent”

tools:context=“ r e l a t i v e P a c k a g e . {relativePackage}. relativePackage.{activityClass}” >

<TextView

android:layout_width=“wrap_content”

android:layout_height=“wrap_content”

android:text=“界面3333” />

[](()测试

[](()运行结果

[](()(2)singleTop(顶部单例)模式
[](()修改AndroidManifest.xml

android:launchMode=“singleTop”

启动界面后在主界面上点击启动界面1没有反应,在界面2 点击启动界面1的时候,会重新创建一个界面1

[](()(3)singleTask模式

无论在什么位置点击启动界面1只会创建一个界面1,将界面2销毁了

[](()(4)singleInstance

点击界面2,启动界面2,点击界面3,启动界面3,点击返回则启动界面1,点击返回启动界面2

设置singleInstance的界面会新栈,之前创建的栈当中没有界面2,只有界面3和界面1

[](()总结

[](()三、功能练习


[](()1、打电话和发短信(工程搭建以及界面布局)

[](()(1)创建App02_Activity

[](()(2)界面布局

1)分析界面结构:垂直的LinearLayout(内水平的LinearLayout)

2)编写代码:

<LinearLayout xmlns:android=“http://schemas.android.com/apk/res/android”

android:layout_width=“fill_parent”

android:layout_height=“fill_parent”

android:orientation=“vertical” >

<LinearLayout

android:layout_width=“match_parent”

android:layout_height=“wrap_content” >

<TextView

android:layout_width=“wrap_content”

android:layout_height=“wrap_content”

android:text=“电话号码:” />

<EditText

android:id=“@+id/et_main_number”

android:layout_width=“fill_parent”

android:layout_height=“wrap_content”

android:hint=“请输入号码”>

<LinearLayout

android:layout_width=“match_parent”

android:layout_height=“wrap_content” >

<TextView

android:layout_width=“wrap_content”

android:layout_height=“wrap_content”

android:text=“短信内容:” />

<EditText

android:id=“@+id/et_main_sms”

android:layout_width=“fill_parent”

android:layout_height=“wrap_content”

android:hint=“请输入短信”>

<LinearLayout

android:layout_width=“match_parent”

android:layout_height=“wrap_content” >

<Button

android:id=“@+id/btn_main_call”

android:layout_width=“wrap_content”

android:layout_height=“wrap_content”

android:text=“打电话” />

<Button

android:id=“@+id/btn_main_send”

android:layout_width=“wrap_content”

android:layout_height=“wrap_content”

android:text=“发短信” />

[](()(3)在Activity当中初始化需要操作的视图对象

MainActivity

package com.itzheng.app02_activity;

import android.app.Activity;

import android.os.Bundle;

import android.widget.Button;

import android.widget.EditText;

public class MainActivity extends Activity {

private EditText et_main_number;

private EditText et_main_sms;

private Button btn_main_call;

private Button btn_main_send;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

//初始化视图对象

et_main_number = (EditText) findViewById(R.id.et_main_number);

et_main_sms = (EditText) findViewById(R.id.et_main_sms);

btn_main_call = (Button) findViewById(R.id.btn_main_call);

btn_main_send = (Button) findViewById(R.id.btn_main_send);

}

}

[](()(4)给视图当中的button设置点击监听 ,给视图当中button设置长按监听

public class MainActivity extends Activity implements OnLongClickListener {

private EditText et_main_number;

private EditText et_main_sms;

private Button btn_main_call;

private Button btn_main_send;

private OnClickListener onClickListener = new View.OnClickListener() {

@Override

public void onClick(View v) {

if (v == btn_main_call) {// 点击的是打电话

Toast.makeText(MainActivity.this, “点击打电话”, 0).show();

} else if (v == btn_main_send) {// 点击发短信

Toast.makeText(MainActivity.this, “点击发短信”, 0).show();

}

}

};

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

// 初始化视图对象

et_main_number = (EditText) findViewById(R.id.et_main_number);

et_main_sms = (EditText) findViewById(R.id.et_main_sms);

btn_main_call = (Button) findViewById(R.id.btn_main_call);

btn_main_send = (Button) findViewById(R.id.btn_main_send);

// 给视图对象设置点击监听

btn_main_call.setOnClickListener(onClickListener);

btn_main_send.setOnClickListener(onClickListener);

// 给视图对象设置长按监听

btn_main_call.setOnLongClickListener(this);

btn_main_send.setOnLongClickListener(this);

}

@Override

public boolean onLongClick(View v) {

if (v == btn_main_call) {// 长按打电话

Toast.makeText(this, “长按打电话”, 0).show();

} else if (v == btn_main_send) {// 长按发短信

Toast.makeText(this, “长按发短信”, 0).show();

}

return true;

}

}

[](()2、实现打电话

[](()(1)实现点击打电话,进入拨打的界面:修改MainActivity的onClick

a、创建一个Intent(隐式);

b、携带数据

c、startActivity(intent);

在模拟器当中启动电话,观察LogCat当中的ActivityManger对应的内容

@Override

public void onClick(View v) {

if (v == btn_main_call) {// 点击的是打电话

// Toast.makeText(MainActivity.this, “点击打电话”, 0).show();

// a、创建一个Intent(隐式);

String action = “android.intent.action.DIAL”;

action = Intent.ACTION_DIAL;// 和上面的android.intent.action.DIAL一样

Intent intent = new Intent(action);

// b、携带数据

String number = et_main_number.getEditableText().toString();

intent.setData(Uri.parse(“tel:” + number));//tel:固定前缀 data-android:scheme=“tel”

// c、startActivity(intent);

startActivity(intent);

} else if (v == btn_main_send) {// 点击发短信

Toast.makeText(MainActivity.this, “点击发短信”, 0).show();

}

}

[](()(2)长按“打电话”:直接进入拨打电话界面修改MainActivity的onLongClick

a、创建一个Intent(隐式);

b、携带数据

c、startActivity(intent);

@Override

public boolean onLongClick(View v) {

if (v == btn_main_call) {// 长按打电话

//Toast.makeText(this, “长按打电话”, 0).show();

//a、创建一个Intent(隐式);

Intent intent = new Intent(Intent.ACTION_CALL);//android.intent.action.CALL

//b、携带数据

String number = et_main_number.getEditableText().toString();

intent.setData(Uri.parse(“tel:”+number));

//c、startActivity(intent);

startActivity(intent);

} else if (v == btn_main_send) {// 长按发短信

Toast.makeText(this, “长按发短信”, 0).show();

}

return true;// 表示此事件已经被消费了,不会再触发点击事件

}

直接运行会抛出异常,权限被拒绝

[](()(3)添加权限

[](()(4)测试运行

Android快速入门 四大应用组件之一Activity(打电话和发短信)功能练习相关推荐

  1. 安卓day25快速入门 目录结构 清单 DDMS adb 危险权限 发短信 点击事件 安卓版本...

    一.排坑 AndroidStudio非法字符: '\ufeff' 将文件格式改为以UTF-8无BOM格式编码 Sublime Text 保存时 CodeFormatter file is scratc ...

  2. Android调用系统打电话和发短信功能

    一.打电话 1.添加打电话的权限在manifast文件中. <uses-permission Android:name="android.permission.CALL_PHONE&q ...

  3. linux 模拟打电话,Android 调用打电话和发短信功能

    1.打电话 可以自己写界面,在button的单击事件中添加如下代码即可: Intent intent = new Intent(); intent.setAction("Android.in ...

  4. android 自动发彩信,Android编程实现定时发短信功能示例

    本文实例讲述了Android编程实现定时发短信功能.分享给大家供大家参考,具体如下: 第一,要实现发短信的功能,必须要用到android系统中发短信的权限,即在AndoridManifest.xml中 ...

  5. android开发学习:打电话和发短信

    1.新建一个android项目 File--New--Other--android application project 填写application name(就是应用的名字.比方:天天酷跑) 填写 ...

  6. Android实现打电话,发短信

    打电话和发短信 功能描述: 1). 点击"打电话": 进入拨号界面         2). 长按"打电话": 直接拨打电话         3). 点击&quo ...

  7. android+发短信示例,Android编程实现定时发短信功能示例

    本文实例讲述了Android编程实现定时发短信功能.分享给大家供大家参考,具体如下: 第一,要实现发短信的功能,必须要用到android系统中发短信的权限,即在AndoridManifest.xml中 ...

  8. android通话记录列表apk,android打电话,发短信,获取通讯录、通话记录、短信记录...

    [实例简介] 代码实现android打电话,发短信,获取通讯录.通话记录.短信记录 [实例截图] [核心代码] 19287b5f-b70c-4210-ab04-9d24ddd60788 └── cal ...

  9. android关闭或开启移动网络数据(关闭后,设备不可以上网,但可以打电话和发短信)...

    //android关闭或开启移动网络数据(关闭后,设备不可以上网,但可以打电话和发短信) public void setMobileDataEnabled(boolean enabled) { Con ...

最新文章

  1. 异步委托实现多线程winform控件编程
  2. 使用目标管理和精细化管理,更高效地完成目标
  3. 零编程基础学python-如果是一个纯0编程基础的小白,如何学Python
  4. syslog数据接收并处理
  5. ArcSDE10.1配置Oracle 监听器来使用SQL操作ST_Geometry(个人改动版)
  6. DELL MD3200I存储单双控制器的自由切换
  7. localForage Web 离线存储
  8. tensorflow之train.get_checkpoint_state
  9. android jni 结构体_中高级安卓开发技术!Android开发核心知识笔记共2100页,完整版开放下载...
  10. Python3入门机器学习经典算法与应用 第3章 更多相关操作
  11. python 静态变量_python小课堂19 - 面向对象篇(二)
  12. java缓存有几种_JAVA几种缓存技术介绍说明
  13. 笔记本电脑插入耳机仍然外放(亲测有效)
  14. python抓取QQ空间博客文章
  15. bmp图片格式转化为jpg
  16. Linux perlbrew Perl5 安装教程
  17. Admob ANE for Flash Air最新中文教程
  18. blas、lapack、atlas在Ubuntu上的安装
  19. Alpaca 羊驼API的使用
  20. 如何专注?一个番茄钟就够了!

热门文章

  1. 生产追溯系统-Wifi+传感器,实现计数器以及监控机器是否停止
  2. 从ESP32 BLE应用理解GATT
  3. 四种开发模式 得区别
  4. Android 端“被挤下线”功能的实现
  5. 【2020年高被引学者】 杨植麟 北京睿科伦智能科技有限公司
  6. Wi-Fi 6关键技术解析
  7. 2022年全球市场核医学放射性药物总体规模、主要生产商、主要地区、产品和应用细分研究报告
  8. Ubuntu16.04(64位)安装chrome浏览器
  9. Ubuntu下安装hive,并配置mysql作为元数据库
  10. HashMap中的putVal(int hash, K key, V value, boolean onlyIfAbsent, boolean evict)解读