Android Studio開發-day2 Activity的使用

Activity的使用

Activity是Android程序的四大組件之一,也是呈現給用戶的第一印象,因此對于這個組件的編程是非常重要的。

創建Activity

創建Activity非常簡單,在AS中,切換到Project目錄下,尋找包文件夾,在其上右擊,新建一個空的activity,AS會默認幫我們在Manifest中進行注冊,并且程序會自動重寫Oncreate方法

菜單選項的使用

要想在Activity中添加菜單欄,實現如下的效果:

image.png

首先需要在res目錄下新建menu文件夾,在menu文件夾中新建一個menu類型資源文件,文件代碼如下:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/add_item"
        android:title="Add"/>
    <item
        android:id="@+id/remove_item"
        android:title="remove"/>
</menu>

此時已經可以使用AS的預覽功能查看到菜單欄了,但是仍然需要在Activity中激活一下,在activity.java中重寫
public boolean onCreateOptionsMenu(Menu menu){};函數,這里可以使用AS快捷鍵Ctrl+O,搜索此函數

重寫完以上函數后,兩個菜單項并不能實現其功能,需要再重寫一下public boolean onOptionsItemSelected(MenuItem item) {}

public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()){

            case R.id.add_item:
                Toast.makeText(this,"You clicked Add",Toast.LENGTH_SHORT).show();
                break;
            case R.id.remove_item:
                Toast.makeText(this,"You clicked Remove",Toast.LENGTH_SHORT).show();
                break;



        }
        return true;
    }

Toast的使用

Toast是Android中用來顯示顯示信息的一種機制,和Dialog不一樣的是,Toast是沒有焦點的,而且Toast顯示的時間有限,過一定的時間就會自動消失。

toast的使用非常簡單,只需要使用靜態方法makeText()即可實現

Toast.makeText(this,"You clicked Add",Toast.LENGTH_SHORT).show();
// toast.setGravity(Gravity.CENTER, 0, 0); 實例方法,設置出現位置
/*
   toast.setGravity(Gravity.CENTER, 0, 0);
   LinearLayout toastView = (LinearLayout) toast.getView();
   ImageView imageCodeProject = new ImageView(getApplicationContext());
   imageCodeProject.setImageResource(R.drawable.icon);
   toastView.addView(imageCodeProject, 0);
*/
// 設置帶圖片的toast

效果圖:


Toast效果圖
Toast效果圖

Activity切換

最簡單的切換方式,顯式Intent,即指明打開新的Activity的名字:

Intent intent = new Intent(MainActivity.this,Main2Activity.class);// 去往的參數填一個class文件
startActivity(intent);

復雜一點的是隱式切換:


Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.baidu.com"));
startActivity(intent);

這里是打開系統默認的Activity,比如這里打開的就是瀏覽器,當然,如果別的Activity也可以在manifest中進行注冊,隱式Intent打開的是符合注冊條件的activity,若存在多個符合條件會提供給用戶進行選擇

        <activity android:name=".Main3Activity">
            <intent-filter>
                <action android:name="android.intent.action.VIEW"/>
                <category android:name="android.intent.category.DEFAULT"/>
                <data android:scheme="http"/>
            </intent-filter>
        </activity>

Intent傳遞數據

使用Intent可以在Activity中傳遞數據,一種簡單的方法是:

String data = "Hello,My activity";

Intent intent = new Intent(MainActivity.this,Main2Activity.class);
intent.putExtra("extra_data",data);
startActivityt();

// Main2Activity中接受數據的部分
Intent intent = getIntent();
String data = intent.getStringExtra("extra_data");
Log.d(TAG, data);

還有一種方法是調用Main2Activity的MainActivity從被調用的獲得數據:

// MainActivity中的代碼
Intent intent = new Intent(MainActivity.this,Main2Activity.class);
startActivityForResult(intent,1);

//另外要重寫onActivityResult來獲取返回數據,這里的requestCode就是我們剛才設置的1,這樣這個函數就可以處理多個request了
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        switch (requestCode){
            case 1:
                if (resultCode==RESULT_OK){
                    String returndata = data.getStringExtra("data_back");
                    Log.d(TAG,returndata);

                }break;
            default:

        }

    }
// Main2Activity中的代碼
Intent intent = new Intent();
intent.putExtra("data_back","Hello,my mainactivity");
setResult(RESULT_OK,intent);

// 也可以重寫onBackPress的方法,加入上面代碼
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,269評論 25 708
  • ¥開啟¥ 【iAPP實現進入界面執行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程,因...
    小菜c閱讀 6,523評論 0 17
  • 今天是2016年的第一天,又到了一年一度年終總結的時候,未能免俗。 今天去祈福進香,沒錯我不是徹底的唯物主義者。而...
    沒事兒姑娘閱讀 329評論 0 0
  • 連續兩篇小文上了首頁,群里小伙伴也是捷報頻傳,寫作熱情高漲。 上周兩個休息日考了三場試,考試當天夜里兩點多睡不著,...
    微危道人閱讀 542評論 22 30
  • 我住在一個我從來都沒見過的地方,幾層樓的房子,然而卻并不是那種豪華的別墅,而是那種俯視圖像回字一樣的格局的破舊水泥...
    請叫我徐先生閱讀 1,350評論 0 0