編輯:關於Android編程
前言
安卓開發中一個很基礎的操作就是打開一個 Activity ,另一個很必要的操作就是,打開一個 Activity ,在打開的 Activity 中操作之後並獲得返回結果。
兩個 Activity
為了演示這個操作,我們需要兩個 Activity : MainActivity 和 OtherActivity ,在 MainActivity 中通過 Intent 啟動 OtherActivity ,並獲得 OtherActivity 結束後返回的結果,例子僅作演示,為了方便,我直接在 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(); } }
整個代碼的執行邏輯如下:
1、兩個 Activity 的代碼就是這樣的, 當 MainActivity 中的 Button 被觸發 onClick()
事件後,把 MainActivity 中的 EditText 的內容發給了 OtherActivity 。
2、OtherActivity 打開並初始化好控件後,把 EditText 的內容設置為 MainActivity 發過來的內容。
3、當 OtherActivity 中的 Button 被觸發 onClick()
事件後,把 OtherActivity 中的 EditText 的內容返回給 MainActivity。
4、當返回到 MainActivity 時,會執行 ononActivityResult()
方法的內容,判斷如果 RequestCode 和 ResultCode 無誤後,把 MainActivity 中的 EditText 的內容改為 OtherActivity 返回的結果。(這裡判斷了 RequestCode 和 ResultCode ,所以 OtherActivity 通過 Back 鍵返回時, MainActivity 的內容不會改變)
所以結果就是,通過這樣的方式打開這兩個Activity,他們中的 EditText 的內容是同步的,一個 Activity 改變了,到另一個 Activity 中也會跟著改變。
總結
好了,以上就是關於Android中startActivityForResult() 的全部內容了,希望本文的內容對各位Android開發者們能帶來一定的幫助,如有疑問大家可以留言交流,謝謝大家對本站的支持。
推送現在在移動項目開發中已經很常見了,比較常見的推送方式有小米推送、極光推送和個推,今天我們所講解的是Tencent的信鴿推送在Android上的應用。一、信鴿Andro
前言:前面我們介紹MediaPlayer相關方法,有人說,沒有實際例子,看得不是很明白,今天在分析MediaPlayer時,順帶一個播放網絡視頻例子。可以自行試試。同樣先
加入到你的項目中去在 Module 下的 build.gradle 中,加上下面這句:compile 'com.github.youngkaaa:navigati
先看看效果圖:實現思路:監聽ListView的滑動,等目的項為列表第一個可見的ItemView時,添加一個一個的布局,產生懸停效果實現代碼:public class Cu