編輯:關於Android編程
當前Activity:包含一個Button和一個TextView,用於啟動另一個Activity和顯示傳回的數據,這裡重寫了onActivityResult()方法。
public class MainActivity extends AppCompatActivity { private TextView textView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //找到TextView textView=(TextView)findViewById(R.id.textView); findViewById(R.id.btnSend).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent=new Intent(MainActivity.this,AnotherActivity.class); startActivityForResult(intent,0); } }); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); textView.setText("另外一個Activity傳回來的數據是:"+data.getStringExtra("data")); } }
XML文件:activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context="com.example.androidtest.MainActivity"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="啟動另一個Activity" android:id="@+id/btnSend" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="New Text" android:id="@+id/textView" /> </LinearLayout>
被啟動的Activity:包含一個Button和editText,用於將數據發送回去和輸入要傳的數據。
public class AnotherActivity extends AppCompatActivity { private EditText editText; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_another); editText= (EditText) findViewById(R.id.editText); Button button= (Button) findViewById(R.id.btnSendBack); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //返回結果 Intent i=new Intent(); i.putExtra("data",editText.getText().toString()); setResult(1,i); finish(); } }); } }
xml文件:activity_another.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:orientation="vertical" tools:context="com.example.androidtest.AnotherActivity"> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/editText" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="發送回去" android:id="@+id/btnSendBack"/> </LinearLayout>
運行結果:
補充:這裡點擊發送回去按鈕返回上一個Activity沒有問題,但是如果點系統自帶的返回鍵就會出錯了,出現此bug的原因就是resultCode沒有判斷,點擊系統自帶的返回鍵的resultCode==RESULT_CANCELED,所以是不一樣的。
解決方法:所以這裡的requestCode和resultCode就能發揮作用了,在上述程序中requestCode==0,resultCode==1,也就是需要判斷是否是跳轉到該Activity以及返回上一個Activity是通過該按鈕還是通過系統返回鍵來進行的,所以MainActivity中的onActivityResult()方法可以改進為:
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if(requestCode==0){ if(resultCode==1){ textView.setText("另外一個Activity傳回來的數據是:"+data.getStringExtra("data")); } } }
以上所述是小編給大家介紹的獲取被啟動的Activity傳回的數據,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對本站網站的支持!
Fragment碎片(Fragment)是一種可以嵌入在活動當中的UI片段,它能讓程序更加合理和充分地利用大屏幕的空間,因而在平板上應用的非常廣泛。碎片是什麼這是《第一行
一般我們在寫android Activity的時候總是會在onCreate方法中加上setContentView方法來加載layout,通過findViewById來實現
引用開源框架通過AsyncHttpClient進行文件上傳,具體內容如下一、步驟:1.添加權限(訪問網絡權限和讀寫權限)2.獲取上傳文件路徑並判斷是否為空3.若不為空,創
相信去年聖誕節打開過手機淘寶的童鞋都會對當時的特效記憶猶新吧:全屏飄雪,旁邊還有個小雪人來控制八音盒背景音樂的播放,讓人有種身臨其境的感覺,甚至忍不住想狠狠購物了呢(誤)