活動
活動是什么
- 活動是包含用戶界面的組件 ,用于和用戶交互,一個應用程序可以有0個或多個活動
創建活動
- 空白layout和 no activity 創建后 onCreat()已經自動重寫
- 創建和加載布局 新建layout目錄,新建layout文件 layout文件下有 可視化布局(Design)和Text
- 在布局layout文件中添加button 控件, 定義 button的ID ,尺寸 , text .甚至可以定義background 等
-
要在java文件中添加代碼使布局加載
setOnCreatView(R.layout.xxx_layout)
在AndroidManifest文件中注冊
部分代碼已經自動生成
要在
<acticity></activity>
中添加<intent-filter>
-
android:lable 可以改變標題欄,主活動的話同時改變應用程序顯示名稱
<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>
在活動中添加Toast
- 在java文件中找到在布局中定于的button
findViewById()
- 添加監聽器
onClick()
setOnClickListener()
- Toast 方法 makeText 顯示 ,傳入三個參數
(ConText對象,顯示文字,顯示時間).show();
在活動重添加Menu ---- 右上角三點
-
在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響應事件,在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; }
銷毀一個活動 Activity
finash();
使用Intent在活動件穿梭
-
顯式Intent
- 在FirstActivity重寫 onCreat
- 添加Button鼠標監聽(看前面)
- Inentt(上下文,目標活動)
- 使用startActivity()方法來執行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中按鈕點擊事件
Intent intent = new Intent("com.example.mason.activity.ACTION_START"); ntent.addCategory("com.example.mason.activity.MY_CATEGORY"); startActivity(intent);
只能指定一個action,但是可以指定多個category,要相互匹配,在FirstActivity和AndroidManifest都要有
-
更多隱式Intent用法
- 指定Intent的action是Intent.ACTION_VIEW ,常量值是android.intent.action.VIEW
- 通過setData 和 Uri.parse() 將一個網址字符串解析成一個Uri對象,主要用于指定當前Intent正在操作的數據
- 在<intent-filter> 中可以配置 <data>標簽 指定當前活動 響應什么類型數據
- 打開網址
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);
-
向下一個活動傳遞數據
- FirstActivity putExtra()方法
- SecendActivity getIntent 獲取Intent
- getStringExtra() 傳入獲取相應鍵值 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); }
返回數據給上一個活動
這是我學習Android的筆記,參考書<<第一行代碼-第二版>>,感謝郭霖大神
如有不足之處,可以一起討論
附上郭霖的blog http://blog.csdn.net/guolin_blog