Android中兩個(gè)Activity之間數(shù)據(jù)傳遞及返回問題
下面通過一個(gè)例子來詳細(xì)說明
先上代碼,再細(xì)細(xì)分析
MainActivity
public class MainActivity extends Activity
{
private Button mainBtn=null;
private final static int REQUEST_CODE=1;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mainBtn=(Button)findViewById(R.id.mainBtn);
mainBtn.setOnClickListener(listener);
}
private OnClickListener listener=new OnClickListener()
{
@Override
public void onClick(View v)
{
Intent intent=new Intent();
intent.setClass(MainActivity.this, SecondActivity.class);
intent.putExtra("str", "Intent Demo");
startActivityForResult(intent, REQUEST_CODE);
}
};
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
if (requestCode==REQUEST_CODE)
{
if (resultCode==SecondActivity.RESULT_CODE)
{
Bundle bundle=data.getExtras();
String str=bundle.getString("back");
Toast.makeText(MainActivity.this, str, Toast.LENGTH_LONG).show();
}
}
}
}
由MainActivity 通過最簡(jiǎn)單的Intent.putExtra方法,將參數(shù)傳入,也可以用Bundle傳入?yún)?shù),
Bundle bundle = new Bundle();
bundle.putString("str", "Intent Demo");
intent.putExtras(bundle);
若需要獲得返回值,則用startActivityForResult(),并需要知道返回的一個(gè)RESULT_CODE(int類型),可以理解為指針,用intent.setClass() 確定傳遞給那個(gè)類(這里包括Activity、Service等)。第二個(gè)Activity---本例中的SecondActivity ,用Intent intent=getIntent();Bundle bundle=intent.getExtras();String str=bundle.getString("str");獲得前一個(gè)Activity傳來的參數(shù),這里還需要返回給MainActivity參數(shù),用到了setResult(RESULT_CODE, intent); 這里 要說明的是RESULT_CODE必須與前一個(gè)Activity一致,否則就不能正常返回。而第一個(gè)MainActivity通過重寫onActivityResult()來取得相應(yīng)的返回值。
若不需要返回,可以直接用startActivity()。
SecondActivity
public class SecondActivity extends Activity
{
public final static int RESULT_CODE=1;
private TextView secondTxt;
private Button secondBtn;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.second);
Intent intent=getIntent();
Bundle bundle=intent.getExtras();
String str=bundle.getString("str");
secondTxt=(TextView)findViewById(R.id.secondTxt);
secondTxt.setText(str);
secondBtn=(Button)findViewById(R.id.secondBtn);
secondBtn.setOnClickListener(listener);
}
private OnClickListener listener=new OnClickListener()
{
@Override
public void onClick(View v)
{
Intent intent=new Intent();
intent.putExtra("back", "Back Data");
setResult(RESULT_CODE, intent);
finish();
}
};
}
對(duì)于初學(xué)者,還得提醒一下,別忘記在AndroidManifest.xml添加SecondActivity類
<activity android:name=".SecondActivity"
android:label="@string/app_name">
</activity>
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android WebView 內(nèi)處理302重定向不跳轉(zhuǎn)的解決
這篇文章主要介紹了Android WebView 內(nèi)處理302重定向不跳轉(zhuǎn)的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-03-03
Android系統(tǒng)設(shè)置中的清除數(shù)據(jù)會(huì)清除哪些數(shù)據(jù)?
這篇文章主要介紹了Android系統(tǒng)設(shè)置中的清除數(shù)據(jù)會(huì)清除哪些數(shù)據(jù)?本文對(duì)比了清除前和清除后的數(shù)據(jù)情況,從而得出到底清除了哪些數(shù)據(jù),需要的朋友可以參考下2015-01-01
android自定義ViewPager水平滑動(dòng)彈性效果
這篇文章主要為大家詳細(xì)介紹了android自定義ViewPager水平滑動(dòng)彈性,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12
Android多媒體應(yīng)用使用MediaPlayer播放音頻
這篇文章主要為大家詳細(xì)介紹了Android多媒體應(yīng)用使用MediaPlayer播放音頻,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12
Android 利用三階貝塞爾曲線繪制運(yùn)動(dòng)軌跡的示例
本篇文章主要介紹了Android 利用三階貝塞爾曲線繪制運(yùn)動(dòng)軌跡的示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-03-03
讓Android應(yīng)用不被殺死(killer)的方法
這篇文章主要介紹了讓Android應(yīng)用不被殺死(killer)的方法,本文講解了實(shí)現(xiàn)方法和原理分析,需要的朋友可以參考下2015-04-04
基于RxJava實(shí)現(xiàn)酷炫啟動(dòng)頁
本文介紹怎樣利用RxJava來實(shí)現(xiàn)Android的啟動(dòng)頁,啟動(dòng)頁的效果非???,有需要的朋友們可以參考。2016-07-07

