Android學(xué)習(xí)小結(jié)之獲取被啟動(dòng)的Activity傳回的數(shù)據(jù)
當(dāng)前Activity:包含一個(gè)Button和一個(gè)TextView,用于啟動(dòng)另一個(gè)Activity和顯示傳回的數(shù)據(jù),這里重寫了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("另外一個(gè)Activity傳回來的數(shù)據(jù)是:"+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="啟動(dòng)另一個(gè)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>
被啟動(dòng)的Activity:包含一個(gè)Button和editText,用于將數(shù)據(jù)發(fā)送回去和輸入要傳的數(shù)據(jù)。
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) {
//返回結(jié)果
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="發(fā)送回去" android:id="@+id/btnSendBack"/> </LinearLayout>
運(yùn)行結(jié)果:



補(bǔ)充:這里點(diǎn)擊發(fā)送回去按鈕返回上一個(gè)Activity沒有問題,但是如果點(diǎn)系統(tǒng)自帶的返回鍵就會(huì)出錯(cuò)了,出現(xiàn)此bug的原因就是resultCode沒有判斷,點(diǎn)擊系統(tǒng)自帶的返回鍵的resultCode==RESULT_CANCELED,所以是不一樣的。
解決方法:所以這里的requestCode和resultCode就能發(fā)揮作用了,在上述程序中requestCode==0,resultCode==1,也就是需要判斷是否是跳轉(zhuǎn)到該Activity以及返回上一個(gè)Activity是通過該按鈕還是通過系統(tǒng)返回鍵來進(jìn)行的,所以MainActivity中的onActivityResult()方法可以改進(jìn)為:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode==0){
if(resultCode==1){
textView.setText("另外一個(gè)Activity傳回來的數(shù)據(jù)是:"+data.getStringExtra("data"));
}
}
}
以上所述是小編給大家介紹的獲取被啟動(dòng)的Activity傳回的數(shù)據(jù),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
- Android Activity啟動(dòng)模式之singleTask實(shí)例詳解
- Android入門之Activity四種啟動(dòng)模式(standard、singleTop、singleTask、singleInstance)
- Android編程中activity啟動(dòng)時(shí)出現(xiàn)白屏、黑屏問題的解決方法
- 詳解Activity之singletast啟動(dòng)模式及如何使用intent傳值
- Android中Activity啟動(dòng)默認(rèn)不顯示輸入法解決方法
- Android顯式啟動(dòng)與隱式啟動(dòng)Activity的區(qū)別介紹
- Android筆記之:App應(yīng)用之啟動(dòng)界面SplashActivity的使用
相關(guān)文章
Android基于廣播事件機(jī)制實(shí)現(xiàn)簡單定時(shí)提醒功能代碼
這篇文章主要介紹了Android基于廣播事件機(jī)制實(shí)現(xiàn)簡單定時(shí)提醒功能代碼,較為詳細(xì)的分析了Android廣播事件機(jī)制及提醒功能的相關(guān)實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-10-10
Android基于reclyview實(shí)現(xiàn)列表回彈動(dòng)畫效果
這篇文章主要為大家詳細(xì)介紹了Android基于reclyview實(shí)現(xiàn)列表回彈動(dòng)畫效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04
Android applicationId和包名的區(qū)別總結(jié)
這篇文章主要給大家介紹了關(guān)于Android applicationId和包名的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對各位Android開發(fā)者們具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06
Android判斷用戶是否允許了攝像頭權(quán)限實(shí)例代碼
本篇文章主要介紹了Android判斷用戶是否允許了攝像頭權(quán)限實(shí)例代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04

