O(∩_∩)O–作者 說:
請原諒我無恥的稱自己為作者了!本文是作者看《Android第一行代碼》然后自己摘抄書上覺得對自己目前有用的內容,目前作者也是剛剛入門學習階段,如果有錯誤希望大家多多指正,
PS:為什么我會寫這幾句沒用的東西(因為昨天寫的筆記突然好多人看,,,我慌了)只是分享看書而已!
最后,文章盡量日更,每次更新一點今天新學的東西,大家一起加油
Android第一行代碼–學習筆記
認識四大組件
??活動Activity
??服務Service
??廣播接收器Broadcast Receiver
??內容提供器Content Provider
AndroidMainfest.xml檔案
簡述:1.程式中定義的所有四大組件,都需要在這個檔案里注冊
? 2.給應用程式添加權限宣告
其中:
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
這兩行代碼所在Activity,表示此Activity是主活動,點開本程式的入口
build.gradle檔案
build.gradle(Project)
buildscript {
repositories {
jcenter() //代碼托管倉庫
}
dependencies {
classpath "com.android.tools.build:gradle:7.0.2"
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.31"
//宣告gradle插件
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
}
}
build.gradle(Module)
plugins {
id 'com.android.application' //這是一個應用程式模塊
id 'com.android.library' //這是一個庫模塊
}
android {
compileSdk 31 //指定專案的編譯版本
defaultConfig {
applicationId "com.co.test" //指定專案包名
minSdk 26 //指定專案最低兼容Android系統版本
targetSdk 31 //運行時權限
versionCode 1 //專案版本號
versionName "1.0" //專案版本名
}
buildTypes { //用于指定安裝檔案的相關配置
release { //正式
minifyEnabled false //是否對專案代碼進行混淆
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' //指定混淆時使用的規則檔案
}
debug { //測驗
minifyEnabled false
}
}
dependencies { //指定專案所有的依賴關系 1.本地依賴 2.庫依賴 3.遠程依賴
//需要啥用啥就是了,,,
}
Android日志工具Log
??Log.v():用于列印瑣碎,意義最小的日志資訊
??Log.d():用于列印一些除錯資訊
??Log.i():用于列印一些比較重要的資料
??Log.w():用于列印一些警告資訊
??Log.e():用于列印程式中的錯誤資訊
加載布局的方法
🗡最基礎方法
setContentView(R.Layout.home_layout)
Intent
核心:用于組件互動,包括當前組件想執行的動作和組件之間傳遞資料
顯式Intent
🗡需求:啟動目標活動
思路:Activity類提供了一個startActivity()方法,用于啟動活動,此方法接收一個Intent引數,將構建好的Intent傳入startActivity()方法即可,
Intent intent = new Intent(FirstActivity.this,SecondActivity.class)
startActivity(intent);
隱式Intent
🗡需求:啟動目標活動
思路:大體同顯式,但需要在AndroidMainfest檔案中配置action和category標簽
<action android:name="com.example.activitytest.ACTION_START" />
<category android:name="android.intent.category.DEFAULT" />
Intent intent = new Intent(com.example.activitytest.ACTION_START)
startActivity(intent);
Intent傳遞資料
🗡最簡單的傳遞方式
Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
intent.putExtra("鍵值",資料);//傳遞
startActivity(intent);
接收
Intent intent = getIntent();
String data = intent.getStringExtra("extra_data");
🗡回傳資料給上一個活動
思路:Activity中的startActivityForResult()方法也是用于啟動活動的,這個方法期望在活動銷毀的時候能夠回傳一個結果給上一個活動,
[注意]:startActivityForResult()方法接收兩個引數,第一個引數還是Intent,第二個引數是請求碼,用于在之后的回呼中判斷資料的來源,
Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
startActivityForResult(intent,1); //請求
回傳
Intent intent = new Intent();
intent.putExtra("data_return","hello one");
setResult(RESULT_OK,intent);
finish();
在第一個activity中接收
@Override
protected void onActivityResult(int requestCode,int resultCode,Intent data){
switch(requestCode){
case 1:
if(resultCode == RESULT_OK) {
String returnedData = data.getStringExtra("data_return");
Log.d("FirstActivity",returnedData);
}
break;
default:
}
}
Fragment-動態添加碎片
private void replaceFragment(Fragment fragment){
FragmentManager fragmentManager = getSupportFragmentMannager();
FragmentTransaction transaction = fragmentManager.beginTransaction();
transaction.replace(R.id.right_layout,fragment);
transaction.addToBackStack(null); //補充:接收一個名字用于描述回傳堆疊的狀態(就是點back程式不會退出,而是回到上一個fragment)
transaction.commit();
}
//總結:
//1.創建待添加碎片,就是new一個fragment
//2.獲取FragmentManager,可以直接在activity中getSupportFragmentMannager()調取
//3.開啟一個事務,通過呼叫beginTransaction()方法開啟
//4.向容器內添加或替換碎片,一般用replace()方法,其中需要傳入容器id和待添加的碎片實體
//5.提交事務,呼叫commit()
呼叫Fragment(碎片)里的方法
RightFragment rightFragment = (RightFragment) getFragmentManager().findFragmentById(R.id.right_fragment);
//利用findFragmentById獲取碎片實體
從Text中取值
String text = tv.getText().toString();
//實體化物件.getText().toString();
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/323470.html
標籤:其他
