活動(dòng)
活動(dòng)是什么
- 活動(dòng)是包含用戶界面的組件 ,用于和用戶交互,一個(gè)應(yīng)用程序可以有0個(gè)或多個(gè)活動(dòng)
創(chuàng)建活動(dòng)
- 空白layout和 no activity 創(chuàng)建后 onCreat()已經(jīng)自動(dòng)重寫
- 創(chuàng)建和加載布局 新建layout目錄,新建layout文件 layout文件下有 可視化布局(Design)和Text
- 在布局layout文件中添加button 控件, 定義 button的ID ,尺寸 , text .甚至可以定義background 等
-
要在java文件中添加代碼使布局加載
setOnCreatView(R.layout.xxx_layout)
在AndroidManifest文件中注冊
部分代碼已經(jīng)自動(dòng)生成
要在
<acticity></activity>中添加<intent-filter>-
android:lable 可以改變標(biāo)題欄,主活動(dòng)的話同時(shí)改變應(yīng)用程序顯示名稱
<activity android:name=".FirstActivity" android:label="This is FirstActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
在活動(dòng)中添加Toast
- 在java文件中找到在布局中定于的button
findViewById() - 添加監(jiān)聽器
onClick()setOnClickListener() - Toast 方法 makeText 顯示 ,傳入三個(gè)參數(shù)
(ConText對象,顯示文字,顯示時(shí)間).show();
在活動(dòng)重添加Menu ---- 右上角三點(diǎn)
-
在res目錄新建menu目錄,新建main菜單文件
<item android:id="@+id/add_item" android:title="Add"/> <item android:id="@+id/remove_item" android:title="Remove"/> -
在FirstActicity中重寫onCreatOptionsMenu()
public boolean onCreatOptionsMenu(){ getMenuInflater().inflate(R.menu.main , menu); return true; } -
定義Menu響應(yīng)事件,在FirstActivity重寫onOptionsItemSelected()
public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()){ case R.id.add_item: Toast.makeText(this,"You click add",Toast.LENGTH_SHORT).show(); break; case R.id.remove_item: Toast.makeText(FirstActivity.this,"You click remove",Toast.LENGTH_SHORT).show(); break; default: } return true; }
銷毀一個(gè)活動(dòng) Activity
finash();
使用Intent在活動(dòng)件穿梭
-
顯式Intent
- 在FirstActivity重寫 onCreat
- 添加Button鼠標(biāo)監(jiān)聽(看前面)
- Inentt(上下文,目標(biāo)活動(dòng))
- 使用startActivity()方法來執(zhí)行intent
Intent intent = new Intent(FirstActivity.this,SecendActivity,class); startActivity(intent); -
隱式Intent
-
在AndroidManifest.xml中添加
<activity> <intent inflater><activity android:name=".SecendActivity"> <intent-filter> <action android:name="com.example.mason.activity.ACTION_START"/> <category android:name="android.intent.category.DEFAULT"/> <category android:name="com.example.mason.activity.MY_CATEGORY"/> </intent-filter> </activity> -
修改FirstActivity0中按鈕點(diǎn)擊事件
Intent intent = new Intent("com.example.mason.activity.ACTION_START"); ntent.addCategory("com.example.mason.activity.MY_CATEGORY"); startActivity(intent);只能指定一個(gè)action,但是可以指定多個(gè)category,要相互匹配,在FirstActivity和AndroidManifest都要有
-
更多隱式Intent用法
- 指定Intent的action是Intent.ACTION_VIEW ,常量值是android.intent.action.VIEW
- 通過setData 和 Uri.parse() 將一個(gè)網(wǎng)址字符串解析成一個(gè)Uri對象,主要用于指定當(dāng)前Intent正在操作的數(shù)據(jù)
- 在<intent-filter> 中可以配置 <data>標(biāo)簽 指定當(dāng)前活動(dòng) 響應(yīng)什么類型數(shù)據(jù)
- 打開網(wǎng)址
Intent intent = new Intent(Intent.ACTION_VIEW); intent.setData(Uri.parse(http://github.com)); startActivity(intent);- tel:
Intent intent = new Intent(Intent.ACTION_DIAL); intent.setData(Uri.parse("tel:10086")); startActivity(intent);
-
向下一個(gè)活動(dòng)傳遞數(shù)據(jù)
- FirstActivity putExtra()方法
- SecendActivity getIntent 獲取Intent
- getStringExtra() 傳入獲取相應(yīng)鍵值 getIntExtra() getBooleanExtra()
- 在logcat查看打印信息
FirstActivity: button1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String data = "Hello SecondActivity"; Intent intent = new Intent(FirstActivity.this,SecendActivity.class); intent.putExtra("extra_data",data); startActivity(intent); } }); SecondActivity: protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.secend_activity); Intent intent = getIntent(); String data = intent.getStringExtra("extra_data"); Log.d("SecondActivity", data); }
返回?cái)?shù)據(jù)給上一個(gè)活動(dòng)
這是我學(xué)習(xí)Android的筆記,參考書<<第一行代碼-第二版>>,感謝郭霖大神
如有不足之處,可以一起討論
附上郭霖的blog http://blog.csdn.net/guolin_blog