●程式說明
1. 當使用startActivityForResult(in,RequestCode);到下一頁後,關閉下一頁時,就一定會回到這頁然後run onActivityResult()
2. setResult(result code,intent data)這個功能在設定現在這個activity結束後要回傳甚麼資料
3.假設在第二頁,不按button,直接使用手機的back功能回上一頁,但又沒有輸入資料,這時就會閃退,因為直接back時,沒有run onclick ok method,就沒有跑setResult(),所以沒有 resultCode,回到上一頁時, onActivityResult就收到 intent 資料是null,當在呼叫 data.getStringExtra()時,就會出現nullException
=>所以做法是在 onActivityResult()method中加上判斷if( requestCode==RequestCode )
4. requestCode是用來指地要回傳資料的name,一般會先用final變數定義,也用 requestCode 判斷拿回來的資料和我們要的是不是一樣
●程式--java code
MainActivity.java
final int RequestCode=1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void click(View view) {
Intent in=new Intent();
in.setClass(this,Main2Activity.class);
startActivityForResult(in,RequestCode);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode==RequestCode){
if(resultCode==RESULT_OK){
Toast
.makeText(this,data.getStringExtra("2data"),Toast.LENGTH_SHORT)
.show();
}
}
}
Main2Activity.java
public void ok(View view) {
EditText text=(EditText)findViewById(R.id.text);
String str=text.getText().toString();
Intent in=new Intent();
in.putExtra("2data",str);
setResult(RESULT_OK,in);
finish();
}
●程式參考(GitHub):Getting a Result from an Activity
文章標籤
全站熱搜
留言列表