国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

Android基礎(chǔ)之startActivityForResult()的用法詳解

2019-12-12 03:57:33
字體:
供稿:網(wǎng)友

前言

安卓開發(fā)中一個很基礎(chǔ)的操作就是打開一個 Activity ,另一個很必要的操作就是,打開一個 Activity ,在打開的 Activity 中操作之后并獲得返回結(jié)果。

兩個 Activity

為了演示這個操作,我們需要兩個 Activity : MainActivity 和 OtherActivity ,在 MainActivity 中通過 Intent 啟動 OtherActivity ,并獲得 OtherActivity 結(jié)束后返回的結(jié)果,例子僅作演示,為了方便,我直接在 Java 文件中定義了控件,就不寫布局文件了。

MainActivity.java

package net.conw.intenttest;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.LinearLayout;public class MainActivity extends Activity implements View.OnClickListener { private EditText editText; private Button button; public static int REQUEST_CODE = 1; @Override protected void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  LinearLayout layout = new LinearLayout(this);  editText = new EditText(this);  button = new Button(this);  button.setText("Main");  button.setOnClickListener(this);  layout.addView(editText);  layout.addView(button);  setContentView(layout); } @Override public void onClick(View v) {  Intent intent = new Intent(this, OtherActivity.class);  intent.putExtra("text", editText.getText().toString());  startActivityForResult(intent, REQUEST_CODE); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) {  super.onActivityResult(requestCode, resultCode, data);  if(requestCode == REQUEST_CODE && resultCode == OtherActivity.RESULT_CODE) {   editText.setText(data.getStringExtra("text"));  } }}

OtherActivity.java

package net.conw.intenttest;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.LinearLayout;public class OtherActivity extends Activity implements View.OnClickListener { private EditText editText; private Button button; public static int RESULT_CODE = 1; @Override protected void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  LinearLayout layout = new LinearLayout(this);  editText = new EditText(this);  button = new Button(this);  button.setText("Other");  button.setOnClickListener(this);  layout.addView(editText);  layout.addView(button);  setContentView(layout);  editText.setText(getIntent().getStringExtra("text")); } @Override public void onClick(View v) {  Intent intent = new Intent();  intent.putExtra("text", editText.getText().toString());  setResult(RESULT_CODE, intent);  finish(); }}

整個代碼的執(zhí)行邏輯如下:

1、兩個 Activity 的代碼就是這樣的, 當 MainActivity 中的 Button 被觸發(fā) onClick() 事件后,把 MainActivity 中的 EditText 的內(nèi)容發(fā)給了 OtherActivity 。

2、OtherActivity 打開并初始化好控件后,把 EditText 的內(nèi)容設(shè)置為 MainActivity 發(fā)過來的內(nèi)容。

3、當 OtherActivity 中的 Button 被觸發(fā) onClick() 事件后,把 OtherActivity 中的 EditText 的內(nèi)容返回給 MainActivity。

4、當返回到 MainActivity 時,會執(zhí)行 ononActivityResult() 方法的內(nèi)容,判斷如果 RequestCode 和 ResultCode 無誤后,把 MainActivity 中的 EditText 的內(nèi)容改為 OtherActivity 返回的結(jié)果。(這里判斷了 RequestCode 和 ResultCode ,所以 OtherActivity 通過 Back 鍵返回時, MainActivity 的內(nèi)容不會改變)

所以結(jié)果就是,通過這樣的方式打開這兩個Activity,他們中的 EditText 的內(nèi)容是同步的,一個 Activity 改變了,到另一個 Activity 中也會跟著改變。

總結(jié)

好了,以上就是關(guān)于Android中startActivityForResult() 的全部內(nèi)容了,希望本文的內(nèi)容對各位Android開發(fā)者們能帶來一定的幫助,如有疑問大家可以留言交流,謝謝大家對武林網(wǎng)的支持。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 中卫市| 滁州市| 龙州县| 利辛县| 基隆市| 黔西县| 辽阳市| 布尔津县| 乌拉特后旗| 都昌县| 开阳县| 波密县| 虎林市| 佳木斯市| 昭苏县| 北流市| 莱芜市| 扬州市| 河西区| 玉溪市| 万宁市| 扎兰屯市| 贵南县| 孙吴县| 宜宾市| 靖安县| 普洱| 沈阳市| 嫩江县| 五寨县| 土默特左旗| 内黄县| 南漳县| 宝兴县| 明水县| 雷州市| 昌平区| 临桂县| 普格县| 和平县| 全州县|