如果您对AndroidStudio使用入门感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于AndroidStudio使用入门的详细内容,我们还将为您解答androidstud
如果您对AndroidStudio使用入门感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于AndroidStudio使用入门的详细内容,我们还将为您解答androidstudio 教程的相关问题,并且为您提供关于Android studio 将Eclipse代码导入到AndroidStudio的两种方式、Android Studio使用Android Annotations注解框架笔记、Android Studio使用lombok、Android Studio使用structure分析源码的有价值信息。
本文目录一览:- AndroidStudio使用入门(androidstudio 教程)
- Android studio 将Eclipse代码导入到AndroidStudio的两种方式
- Android Studio使用Android Annotations注解框架笔记
- Android Studio使用lombok
- Android Studio使用structure分析源码
AndroidStudio使用入门(androidstudio 教程)
AndroidStudio使用入门
- 1_AndroidStudio activity的基本使用
- 1.1_MainActivity和activity_main的初识
- 1.2_Activity的清单文件简介
- 1.3_几种重要文件的介绍
- 1.4_基本布局的认识与使用
- 1.4.1_RelativeLayout(相对布局)
- 1.4.2_线性布局
- 2_访问资源的方式
- 2.1_java访问资源的方式
- 2.2_xml访问资源的方式
- 3_控件的使用
- 3.1_通用属性
- 3.2_选择器的使用
- 3.3_TextView的使用
- 3.4_Button按钮和点击事件的添加
- 3.5_EditText的使用
- 3.6_单选框radio button和radio group的使用
- 3.7_CheckBox的使用
- 3.8_Toast提示的使用
- 3.9_AlertDialog的使用
- 3.9.1_AlertDialog的简单使用
- 3.9.2_AlertDialog的单选框使用
- 3.9.3_AlertDialog的自定义界面的使用
- 3.10_ListView的使用
- 3.10.1_SimpleAdapter的使用(略)
- 3.10.2_ArrayAdapter的使用
- 3.10.3_BaseAdapter的使用(略)
- 4_生命周期与intent的使用
- 4.1_生命周期
- 4.2_页面跳转
- 4.3_intent跳转页面传值
- 4.4_intent传值自定义类
- 4.5_回传数据(略)
1_AndroidStudio activity的基本使用
log.v("","");//在控制面板输出内容
1.1_MainActivity和activity_main的初识
- 在MainActivity所在文件夹中可以创建任意“?Activity”文件作为后端逻辑代码文件
- 同理在activity_main所在文件夹中可以创建任意“activity_?”文件作为前端页面控制代码文件
注意两个文件名的“?”部分要相互对应
1.2_Activity的清单文件简介
1.3_几种重要文件的介绍
Android中的界面是由两个文件组成的 一个是Activity的Java文件 还有一个是xml的布局文件.Java文件都放在java的文件下布局文件全部在res/layout下
layout下的文件都是xml文件
res下的文件不允许有大写字母
manifests文件夹下,AndroidManifest.xml:清单文件。可以配置应用的第一个启动的Activity,注册Activity,修改应用图标及应用名称
values自定义变量名
colors.xml:
strings.xml:
在此文件中定义变量类似C语言中的#define
多语言支持方式drawable文件夹和mipmap文件夹
一般将APP的icon放在minmap文件夹下,其他图片资源放在drawable文件夹下
1.4_基本布局的认识与使用
基本布局的认识:
- View:表示为Android视图
Java文件和xml文件都能编写View
不管是Java还是xml文件最后都会变成Java文件的视图(其中java编写的视图和java课上学的视图一样,一般开发软件不用java编写视图)
- ViewGroup:表示为布局(在xml中布局可以嵌套)
布局控件可以放其它控件常用布局 LinearLayout(线性布局)、RelativeLayout(相对布局)、ConstraintLayout(约束布局)
如果只有一个子控件,则不需要写orientation属性,有多个必须要写,在新工具不一定
常用控件 Button(按钮)、TextView(文本)、EditText(输入框)
- 根布局需要加代码
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:app="http://schemas.android.com/apk/res-auto"
其中xmlns:app只在相对布局中加
1.4.1_RelativeLayout(相对布局)
没有方向性,但是有Z轴,代码在后的Z轴值越大,即可以悬浮必须要参照物
1、布局本身为参照
android:layout_centerHrizontal 水平居中
android:layout_centerVertical 垂直居中
android:layout_centerInparent 相对于父元素完全居中
android:layout_alignParentBottom 贴紧父元素的下边缘
android:layout_alignParentLeft 贴紧父元素的左边缘
android:layout_alignParentRight 贴紧父元素的右边缘
android:layout_alignParentTop 贴紧父元素的上边缘2、通过id来指定参照物
android:layout_below 在某元素的下方
android:layout_above 在某元素的的上方
android:layout_toLeftOf 在某元素的左边
android:layout_toRightOf 在某元素的右边
android:layout_alignTop 本元素的上边缘和某元素的的上边缘对齐
android:layout_alignLeft 本元素的左边缘和某元素的的左边缘对齐
android:layout_alignBottom 本元素的下边缘和某元素的的下边缘对齐
android:layout_alignRight 本元素的右边缘和某元素的的右边缘对齐
3. 属性值为具体的像素值,如 30dip,40px
android:layout_marginBottom 离某元素底边缘的距离
android:layout_marginLeft 离某元素左边缘的距离
android:layout_marginRight 离某元素右边缘的距离
android:layout_marginTop 离某元素上边缘的距离
1.4.2_线性布局
如果只有一个子控件,则不需要写orientation属性,有多个必须要写,在新工具不一定在线性布局中
空间大小:android:layout_width="" android:layout_height=""
match_parent只会占满剩余的空间 wrap_content适应文本大小 除此之外,还可以写固定数值,单位是dp或dip
layout_weight是权重
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
>
<Button
android:id="@+id/button_alterdialog"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="删除"
android:onClick="delete"
/>
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="增加"
android:onClick="delete"
/>
</LinearLayout>
2_访问资源的方式
2.1_java访问资源的方式
R.resource_type.name//R可以理解为资源中的最高包
Android.R.//官方资源
2.2_xml访问资源的方式
@pakage_name:resource_type/name
3_控件的使用
3.1_通用属性
- gravity(对齐方式):center、left、rightbottom
多个布局方式以"|"分隔
- 边距
内边距:padding
外边距:margin
- 限制文本行数
android: lines="2" android:ellipsize="end"----超出的部分“。。。”表示
@H_256_301@放置图片(图片存储在mipmap(drawable)文件夹)
Android:drawable背景图片和颜色
Android:background="@mipmap/drawable_name"(背景图片)
Android:background=“颜色”
3.2_选择器的使用
3.3_TextView的使用
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="16sp"
android:textColor="#ffffff"
android:padding="10dip"
android:background="#cc0000"
android:layout_gravity="center"
android:text="Android Studio 工具箱"/>
3.4_Button按钮和点击事件的添加
-
Button继承于TextView
-
android背景选择器的使用
-
Button点击事件的添加(最简单的方式,另外两种方式见3.6)
java文件下:
MainActivity文件中
public void login(View view){
//动作
}
res.layout文件夹下activity_main文件中
<Button
android:layout_width="90dp"
android:layout_height="70dp"
android:text="登录"
android:textSize="25dp"
android:onClick="login">
</Button>
3.5_EditText的使用
基本使用:
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="提示"
android:inputType="datetime"
></EditText>
其中inputType是输入类型,输入类型有密码、数字、文本、日期等
如何在后端获取编辑框中的内容:
在java文件中
EditText edit_text1 = findViewById(R.id.id名);
edit_text1.getText().toString;
3.6_单选框radio button和radio group的使用
- 直接应用:
RadioGroup radioGroup = findViewById(R.id.radiogroup);
radioGroup.setonCheckedchangelistener(new RadioGroup.OnCheckedchangelistener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId){
case R.id.radiobutton_man:{
Log.i("radiobutton_man","男生");
break;
}
case R.id.radiobutton_woman:{
Log.i("radiobutton_woman","女生");
break;
}
}
}
});
效果:
2. 继承接口:
public class MainActivity extends AppCompatActivity implements RadioGroup.OnCheckedchangelistener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
RadioGroup radioGroup = findViewById(R.id.radiogroup_1);
radioGroup.setonCheckedchangelistener(this);//this在此使用的多态的属性,表示继承的接口类而不是MainActivity类
}
@Override//实现接口中的抽象类
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId){
case R.id.radiobutton_man:{
Log.i("radiobutton_man","男生");
break;
}
case R.id.radiobutton_woman:{
Log.i("radiobutton_woman","女生");
break;
}
}
}
}
效果:
3.7_CheckBox的使用
<CheckBox
android:id="@+id/chaoxiong"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="超凶"
></CheckBox>
CheckBox checkBox = findViewById(R.id.chaoxiong);//获取控件
checkBox.setonCheckedchangelistener(new CompoundButton.OnCheckedchangelistener() {//进行监听
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked){//如果被选中
Log.i("OnCheckedChange",buttonView.toString()+"被选中");
}
}
});
3.8_Toast提示的使用
Toast.makeText(MainActivity.this,"被选中",Toast.LENGTH_LONG).show();
3.9_AlertDialog的使用
3.9.1_AlertDialog的简单使用
<Button
android:id="@+id/button_alterdialog"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="删除"
android:onClick="delete"
/>
public void delete(View v){
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("确认").setIcon(R.mipmap.why).setMessage("确定删除吗?")
.setPositiveButton("确认", new DialogInterface.OnClickListener() {//创建确认选项按钮及其点击事件
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this,"删除成功",Toast.LENGTH_SHORT).show();
}
}).setNegativeButton("取消", new DialogInterface.OnClickListener() {//创建取消选项按钮及其点击事件
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
//下面两个千万不能忘记
AlertDialog dialog = builder.create();//创建
dialog.show();//显示
}
效果:
3.9.2_AlertDialog的单选框使用
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="选择小周周的午餐"
android:onClick="select"
></Button>
public void select(View view){
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("馋的流口水了都").setIcon(R.mipmap.greedy).setSingleChoiceItems(new String[]{"奥尔良鸡腿", "菠萝", "冰激凌"}, 0, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "中午吃"+which, Toast.LENGTH_SHORT).show();
}
});
//下面两个千万不能忘记
AlertDialog dialog = builder.create();//创建
dialog.show();//显示
}
效果:
3.9.3_AlertDialog的自定义界面的使用
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="打开自定义界面"
android:onClick="customView"></Button>
public void customView(View view){
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("新窗口").setView(R.layout.activity_new);
//下面两个千万不能忘记
AlertDialog dialog = builder.create();//创建
dialog.show();//显示
};
效果:
3.10_ListView的使用
3.10.1_SimpleAdapter的使用(略)
3.10.2_ArrayAdapter的使用
<ListView
android:id="@+id/listview"
android:layout_width="wrap_content"
android:layout_height="match_parent"
></ListView>
ListView listView = findViewById(R.id.listview);
String[] name = {"菠萝","青皮桔","香蕉","西瓜"};
ArrayAdapter arrayAdapter = new ArrayAdapter(newActivity.this,android.R.layout.simple_list_item_1,android.R.id.text1,name);
listView.setAdapter(arrayAdapter);
3.10.3_BaseAdapter的使用(略)
4_生命周期与intent的使用
4.1_生命周期
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
LogUtils.d(TAG,"onCreate ---> 创建时调用");
}
@Override
protected void onRestart() {
super.onRestart();
LogUtils.d(TAG,"onRestart ---> 重启时调用");
}
@Override
protected void onStart() {
super.onStart();
LogUtils.d(TAG,"onStart ---> 即将可见不可交互时调用");
}
@Override
protected void onResume() {
super.onResume();
LogUtils.d(TAG,"onResume ---> 可见可交互时调用");
}
@Override
protected void onPause() {
super.onPause();
LogUtils.d(TAG,"onPause ---> 即将暂停时调用");
}
@Override
protected void onStop() {
super.onStop();
LogUtils.d(TAG,"onStop ---> 即将停止不可见时调用");
}
@Override
protected void onDestroy() {
super.onDestroy();
LogUtils.d(TAG,"onDestroy ---> 即将销毁时调用");
}
4.2_页面跳转
AndroidManifest.xml代码注意,若要显示某个页面,必须将其在此文件夹中声明
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myapplication">
<application
android:allowBackup="true"
android:icon="@mipmap/angry"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".newActivity">
</activity>
</application>
</manifest>
public void windowSkip(View view){//按钮点击事件
Intent intent = new Intent();
intent.setClass(MainActivity.this,newActivity.class);//从前者跳往后者
startActivity(intent);//启动
}
4.3_intent跳转页面传值
MainActivity文件:
public void loginSkip(View view){
Intent intent = new Intent();
intent.setClass(MainActivity.this,LoginActivity.class);//从前者跳往后者
intent.putExtra("name","jiajia");
intent.putExtra("sex","男");
intent.putExtra("hobby",new String[] {"篮球","乒乓球","羽毛球"});
startActivity(intent);//启动
}
}
LoginActivity文件:
public class LoginActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
//接收传值
Intent intent = getIntent();
String name = intent.getStringExtra("name");
String sex = intent.getStringExtra("sex");
String[] hobbies = intent.getStringArrayExtra("hobby");
Log.i("LoginActivity",name+sex+hobbies);//打印
}
}
4.4_intent传值自定义类
只要继承了parcelable或者serializable接口就可以进行传值,注意接收的时候需要强行转成此自定义类的类型
4.5_回传数据(略)
回传数据
Android studio 将Eclipse代码导入到AndroidStudio的两种方式
前言
Android Studio到现在已经发展到2.1.1+的版本了,最近也在试着使用它,原因是多方面的,一个毕竟是未来的趋势,二则是github上越来越多的大牛开源项目都是基于Android Studio的,因此会使用Android Studio就成为一件必须的任务。
在具体下面的工作之前,有两个概念是与Eclipse不大相同的,即Project和Module。在Android Studio中,一个Project并不是Eclipse的project,倒是有点像workspace(或者说任务吧),而Module才是与Eclipse的project相似的。所以,一个Project中可以包含多个Module,多个Module在一起共同构成一个Project,每个Module可以是一个库,也可以是一个可运行的Module(对应可运行的apk)。
正题
说到使用AndroidStudio,除了新建的项目,我们都会面临的问题是原先Eclipse的代码该怎么导入到AndroidStudio中使用。
这方面相关的资料还比较少,自己摸索了一下,总结出这篇博客,希望能让开发者少走些弯路。 OK,进入正题。
Google为了让我们更加方便的使用AndroidStudio,提供了两种导入Eclipse代码的方式:一种兼容Eclipse,一种是全新的Android Gradle Project. 这里,我们先从兼容模式说起。 兼容模式 这种模式下,保证了Eclipse时代的代码目录结构,整体操作和使用和Eclipse也差不多。 最重要的,当你使用AndroidStudio时,你或者其他人也可以方便的使用Eclipse,互不干扰。
实现步骤
- 从Eclipse中导出Gradle build files 在Eclipse菜单中 File --> Export-->Generate Gradle build files
接下来会到达警告界面,这里会提示AndroidStudio可以直接导入ADT的工程,先过,后面有直接导入的讲解。
选中你的项目工程,包括主工程和库工程(Library)。
确认生成
2. 修改导出文件参数 导出后,由于adt很久没更新,需要手动改一些参数,才能保证正常使用。 为了保证能够讲解的更清晰,下面分情况讲解一下:
没有库工程,只有主工程 这种情况下你看到的目录是这样的
首先需要更改的是 build.gradle 文件 AndroidStudio 1.0 ~ 1.0.2 使用的都是 Android Gradle plugin 1.0.0,因此需要将图中红框内的 0.12.+ 改为 1.0.0
然后还需要更新Gradle版本,指定为所需要的2.2.1
含有库工程 其实改动方法和上面一样,只需要注意是改动整个项目的build.gradle和 /gradle/wrapper/gradle-wrapper.properties。 而不要尝试去主工程或者库工程里面找build.gradle
- 导入AndroidStudio 进入到AndroidStudio中,选择导入非AndroidStudio工程
找到需要导入的工程目录,可以看到图标和Eclipse创建的工程不一样。
点击OK,进入漫长的加载过程,之后就可以正常使用了。
已经创建过工程的打开AndroidStudio会直接进入以前的工程 这时候可以选择File-->Import Project, 选中后点击ok
兼容模式下的bug 使用IDE的打包:
在兼容模式只打主工程的,库工程没有加入到apk中,导致无法正常运行。 截止到1.0.2,AndroidStudio依然存在这个bug。 因为这个bug的存在,你在兼容模式可以使用AndroidStudio编程,打包时开启Eclipse。
OK,兼容模式介绍到这里。 我们开始介绍主角: Android Gradle Project。 这里必须说明的是Google更希望我们使用这种方式,如果没有什么团队的压力,还是使用这种吧。
Android Studio使用Android Annotations注解框架笔记
一、新建Android项目
二、配置build.gradle文件
1)配置项目下面的build.gradle文件
buildscript {
repositories {
jcenter()
mavenCentral() //添加仓库
}
dependencies {
classpath ''com.android.tools.build:gradle:2.1.2''
classpath ''com.neenbedankt.gradle.plugins:android-apt:1.8'' //添加依赖
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
mavenCentral() //添加仓库
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
2)配置app下面的build.gradle文件
apply plugin: ''com.android.application''
apply plugin: ''com.neenbedankt.android-apt'' //apt插件
def AAVersion=''4.1.0'' //AndroidAnnotations版本号
android {
compileSdkVersion 24
buildToolsVersion "24.0.0"
defaultConfig {
applicationId "com.demo.androidannotationdemo"
minSdkVersion 15
targetSdkVersion 24
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile(''proguard-android.txt''), ''proguard-rules.pro''
}
}
}
dependencies {
compile fileTree(dir: ''libs'', include: [''*.jar''])
testCompile ''junit:junit:4.12''
compile ''com.android.support:appcompat-v7:24.1.0''
//添加依赖包
apt "org.androidannotations:androidannotations:$AAVersion"
compile "org.androidannotations:androidannotations-api:$AAVersion"
}
三、修改AndroidManifest.xml文件的Activity配置,在**.MainActivity后面加下划线,点击Build菜单下的Make Project**完成相关的配置下载jar包
<activity android:name=".MainActivity_">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
加下划线的原因详见:http://blog.csdn.net/u012702547/article/details/47355193
这篇文章讲的是在eclipse使用AndroidAnnotations的
四、在Activity中添加注解,运行项目就可以了
@EActivity(R.layout.activity_main)
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_main); 这边就不需要写了
}
}
五、遇到的问题
之前有人写的相关教程有添加如下的东西
//apt {
// arguments {
// androidManifestFile variant.outputs[0].processResources.manifestFile
// resourcePackageName "com.demo.androidannotationdemo"
// }
//}
我这边MakeProject一直报错,后来把上面那段注释掉,反而好了
Cannot get property ''processResources'' on null object
Android Studio使用lombok
参考:https://github.com/mplushnikov/lombok-intellij-plugin
使用@Setter/@Getter时,刚开始在Structure的函数列表里没有生成响应的函数,且调用set/get的地方也报红,但编译OK。
按网上的说法操作后还是不行,最后卸载lombok插件后重新安装就OK了。
Android Studio使用structure分析源码
分析 以下代码实际上做了什么?
1.Intent intent= new Intent(MainActivity.this, AActivity.class);//获取类名
2.intent.putExtra("xcj","123");
1.首先打开Intent的源码(在下载了源码包的前提下,使用ctrl+左键点击Intent就可以看到源码),如下:
你不知道如何打开structure?如下:然后会在侧边栏出现structure,以后只需要点击这里就好了
属性和字段的区别:属性有get和set方法,如下:
属性action有getAction()和setAction方法来进行赋值操作,事实上,属性和字段不都是一个变量(或常量)吗,为什么要区分二者?你可以这样想:这是为了防止开发者错误赋值带来的不安全性,也就是相当于对开发者的提醒,源码没有给你提供get和set方法的变量不要去赋值(也就是说你虽然可以去赋值,但是很可能会引发一些问题)
下面这个锁表示 显示非公开的内容,选上,不然private等修饰的内容都看不到
3.继续分析Intent
该Intent需要两个参数,这里传入两个类,又将其给了那么ComponentName(packageContext, cls),那它做了什么,
显然,它获取了类名,并付给了mPackage和mClass,因此可以知道new ComponentName(packageContext, cls);这个实例中有两个存储了类名的变量,这个实例赋给了mComponent,则通过mComponent.mPackage和mComponent.mClass就可以获取类名,那么就可以通过intent.mComponent.mPackage和intent.mComponent.mClass获取类名。
总结:
Intent intent= new Intent(MainActivity.this, AActivity.class);//获取类名
这条语句获取了MainActivity和AActivity的类名
4.分析
intent.putExtra("xcj","123");
同样查看源码:
首先看Bundle是什么?一层一层往下看,从这里还是不知道它做了什么,看他调用的父类构造方法:super();
在该方法中从注释中可以看出他是创建了一个空Bundle,继续看this,这是BaseBundle类的调用其实例的构造方法,往下看
注释中的意思:
构造一个新的空包,该包使用特定的类加载器
实例化可打包和可序列化对象。
@param loader实例化对象时要使用的显式类加载器
包里面。
@param capacity ArrayMap的初始大小
可以知道这里创建了一个capacity大小的ArrayMap用于存储键值对,并赋给了mMap,显然我们可通过mMap.put()来给mMap进行键值对的添加,也就是可以通过Bundle的实例 bundle.mMap.put()来给mMap进行键值对的添加,看完了Bundle进行一下总结
总:new Bundle()创建了一个实例,在实例主要进行了 Bundle实例下的变量mFlags 的赋值(暂时不知道有啥作用),以及 Bundle实例下的变量mMap 创建了一个ArrayMap<String, Object>,以及 Bundle实例下的变量 mClassLoader进行赋值,(这些变量有Bundle类继承自其父类),最后该Bundle实例赋给了mExtras,则可以通过mExtras.mMap.put();来给mMap添加键值对。
那么再来看mExtras.putString(name, value);做了什么 。
先不管unparcel();看到mMap.put()就已经知道他给mMap添加了键值对
最后总结第二条语句做了什么。
intent.putExtra("xcj","123");
该语句将键值对"xcj"和"123"储存到Bundle类的实例mExtras中了,而mExtras是intend的一个变量,也就是将该键值对储存到intent中去了,显然,在内部,可以通过intent.mExtras.mMap.get()来获取该键值对。
总:以上全部都只是在分析以下两句代码实际上做了什么,了解它是怎么做的,在分析其他源码的时候可以采取同样的办法
Intent intent= new Intent(MainActivity.this, AActivity.class);//获取类名
intent.putExtra("xcj","123");
今天的关于AndroidStudio使用入门和androidstudio 教程的分享已经结束,谢谢您的关注,如果想了解更多关于Android studio 将Eclipse代码导入到AndroidStudio的两种方式、Android Studio使用Android Annotations注解框架笔记、Android Studio使用lombok、Android Studio使用structure分析源码的相关知识,请在本站进行查询。
本文标签: