StartActivityForRequest的傳遞機制,從下一個活動向上一個活動傳遞資料
阿新 • • 發佈:2018-12-20
關於startActivityforRequest的使用
想要實現的效果 在一個主介面中點選進入下一個活動,當回到主介面中時,將該活動獲得的資料資訊傳遞到主活動中,類似於使用者釋出訊息,釋出成功後進入訊息頁面
//在主介面的activity定義intent和requestcode,requestcode是指一個具體的數值,可以是任意數值,用於參照與另一個活動中的resultcode是否匹配,匹配則傳遞資料值
//對底部導航欄的item進行監聽,當點擊發布進入釋出頁面,採用startActivityForResult啟動活動 case R.id.three: toolbar.setTitle(item.getTitle().toString()); Intent mIntent =new Intent(zhuActivity.this,build.class); int requestCode = 0; startActivityForResult(mIntent, requestCode); break;
//在需要觸發點選事件的程式碼段中實現介面的跳轉
//在釋出介面(build.java)中將獲得的輸入資料利用intent進行傳遞,這裡利用了bimb雲後端,將模擬使用者釋出的資料儲存到雲後端中
build_data.save(new SaveListener<String>() { @Override public void done(String s, BmobException e) { if(e==null){ Toast.makeText(build.this,"釋出訊息成功:" + s,Toast.LENGTH_LONG).show(); Intent mIntent = new Intent(); mIntent.putExtra("message", editText.getText().toString()); // 設定結果,並進行傳送 setResult(resultCode, mIntent); finish(); }else{ Log.i("bmob","失敗:"+e.getMessage()+","+e.getErrorCode()); } } });
在zhu.activity.java主介面中還需要呼叫onActivityResult()方法來獲得傳遞的資料
//判斷requestCode與resultcode是否相等,相等則將主介面的textview的text設定為我們在edittext輸入的資料 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { String message =data.getStringExtra("message"); if (requestCode==resultCode){ textView.setText(message);} }