1. 程式人生 > >StartActivityForRequest的傳遞機制,從下一個活動向上一個活動傳遞資料

StartActivityForRequest的傳遞機制,從下一個活動向上一個活動傳遞資料

關於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);}
    }