簡體   English   中英

如何將數據從活動發送回片段

[英]how to send data from an activity back to a fragment

我對如何在片段和活動之間發送數據感到非常困惑,因為我發現了如何在活動甚至片段之間發送數據,而不是從從片段調用的活動中發送數據(我認為這是不同的,因為我嘗試了這些方法他們沒有工作)。

在我的情況下,我想從一個片段開始一個新的活動,並將一些數據(來自時間選擇器的時間)發送回啟動該活動的片段。

所以基本上我的問題是,

如何從擴展片段的類啟動新活動?

然后,如何將數據發送回片段。

從片段開始活動,為您提供一些結果; 您可以使用startActivityForResult

例如:

    public class YourFragment extends Fragment {

    private static final int REQUEST_GET_DATA_FROM_SOME_ACTIVITY = 1;

    //start activity for result
    ....
    Intent intent = new Intent(getActivity(),SomeActivity.class);
    startActivityForResult(intent,REQUEST_GET_DATA_FROM_SOME_ACTIVITY)

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if(requestCode == REQUEST_GET_DATA_FROM_SOME_ACTIVITY && resultCode == Activity.RESULT_OK) {
          Bundle extras = data.getExtras();
           //get data from extras
        }
    }

}

在你的活動中

public class SomeActivity extends Activity {

      //complete process and deliver result
      ........
      Intent resultIntent = new Intent();
      resultIntent .putExtra("extra","put anything");
      setResult(Activity.RESULT_OK, resultIntent);
      finish();
   }
}

在片段中聲明一個field (您將在下面看到用法)

private static int RC_SOME_ACTIVITY = 101;

從片段開始活動

startActivityForResult(new Intent(getContext(), SomeActivity.class), RC_SOME_ACTIVITY);

在開始的活動中發送數據

Intent data = new Intent();
// add data to intent

setResult(RESULT_OK, data);
finish();

在您的片段中,您需要覆蓋onActivityResult以提取數據

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if(requestCode == RC_SOME_ACTIVITY && resultCode == RESULT_OK) {
        // extract data 
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM