首先給大家介紹一下android中的activity:
一個(gè)activity一般代表手機屏幕的一屏,概念相當與網(wǎng)頁(yè)。一般來(lái)說(shuō)一個(gè)android應用是由一個(gè)或多個(gè)activity組成,activity直接可進(jìn)行跳轉,直接也可以通過(guò)回調方法傳遞參數。
activity之間的參數傳遞:
首先我們新建兩個(gè)按鈕,分別在layout1,layout2中,按鈕的id為btn1,btn2,然后在分別建立兩個(gè)activity分別為Activity1,Activity2。Activity1分別和layout1關(guān)聯(lián),Activity2分別和layout2關(guān)聯(lián),我們接下來(lái)要做的事情就是在A(yíng)ctivity1中把參數傳遞到Activity2中,然后在A(yíng)ctivity2運行完成的時(shí)候并返回到Activity1的時(shí)候,Activity1再從獲取Activity2中參數。
這是Activity1中的代碼:
02 | public void onCreate(Bundle savedInstanceState) { |
03 | super.onCreate(savedInstanceState); |
04 | setTitle("這是activity1"); |
05 | setContentView(R.layout.layout1); |
08 | Button btn1 = (Button) findViewById(R.id.btn1); |
09 | btn2.setOnClickListener(new Button.OnClickListener() { |
11 | public void onClick(View v) { |
12 | Intent intent1 = new Intent(MainActivity.this, Activity3.class); |
13 | intent1.putExtra("activity1", "數據來(lái)自activity1"); |
14 | startActivityForResult(intent1, REQUEST_CODE); |
18 | <P>成時(shí)調用onActivityResult方法</P> |
20 | protected void onActivityResult(int requestCode, int resultCode, Intent data) { |
21 | if(requestCode == REQUEST_CODE){ |
22 | if(resultCode == RESULT_CANCELED){ |
24 | }else if(resultCode == RESULT_OK){ |
25 | System.out.println("這里已經(jīng)執行..."); |
27 | Bundle extras = data.getExtras(); |
29 | txt = extras.getString("store"); |
31 | setTitle("這里是</SPAN><SPAN style="LINE-HEIGHT: 19px; BACKGROUND-COLOR: #ffffff; FONT-FAMILY: 'sans serif', tahoma, verdana, helvetica; WHITE-SPACE: normal; FONT-SIZE: 13px">Activity1</SPAN><SPAN>:" + txt); |
這是Activity2中的代碼:
02 | protected void onCreate(Bundle savedInstanceState) { |
03 | super.onCreate(savedInstanceState); |
04 | setTitle("這是activity2"); |
05 | setContentView(R.layout.layout2); |
06 | Bundle bundle = getIntent().getExtras(); |
08 | setTitle("這里是Activity2:" + bundle.getString("</SPAN><SPAN style="LINE-HEIGHT: 19px">activity1</SPAN>"));<SPAN> } |
10 | Button btn = (Button) findViewById(R.id.btn2); |
11 | btn.setOnClickListener(new Button.OnClickListener() { |
13 | public void onClick(View v) { |
14 | Bundle bundle = new Bundle(); |
15 | bundle.putString("store", "這是Activity2中傳遞過(guò)來(lái)的數據"); |
16 | Intent mIntent = new Intent(); |
17 | mIntent.putExtras(bundle); |
18 | setResult(RESULT_OK, mIntent); |
首先解釋一下startActivity()和startActivityForResult()這兩種方法的不同:前者是啟動(dòng)一個(gè)新的Activity,當新的Activity執行完成后不會(huì )執行回調函數,
當然也不會(huì )有任何的返回值;后者也是啟動(dòng)一個(gè)新的Activity,并且當新的Activity運行結束的時(shí)候,還必須執行舊的Activity里面的
回調函數,這個(gè)回調函數叫做onActivityResult(),其中startActivityForResult()里面有兩個(gè)參數,第一個(gè)參數是你聲明的
Intent,第二個(gè)參數是請求碼,如果請求碼大于0的時(shí)候,當新的Activity結束的時(shí)候,這個(gè)請求碼返回到onActivityResult(),
然后通過(guò)不同的請求碼在回調函數onActivityResult()中針對不同的返回值執行不同的代碼操作。其中onActivityReuslt()這也是
一個(gè)回調函數,當新的Activity執行完成后,還必須執行舊的Activity的這個(gè)回調函數。
參數傳遞:Activity和Activity之間的參數傳遞是通過(guò)Bundle的鍵值對來(lái)傳遞,Bundle是對HashMap的重新封裝,但是Bundle只能
存放基本類(lèi)型,比如:String/int/byte/boolean/char等。
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請
點(diǎn)擊舉報。