首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在片段及其容器活动之间传递数据

在片段及其容器活动之间传递数据
EN

Stack Overflow用户
提问于 2012-02-19 01:10:13
回答 8查看 268.9K关注 0票数 192

如何在片段和它的容器活动之间传递数据?有没有类似于通过意图在活动之间传递数据的东西?

我读了这篇文章,但没有多大帮助:

http://developer.android.com/guide/topics/fundamentals/fragments.html#CommunicatingWithActivity

EN

回答 8

Stack Overflow用户

发布于 2012-08-01 15:57:17

代码语言:javascript
复制
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    Bundle b = getActivity().getIntent().getExtras();
            wid = b.getString("wid");
            rid = b.getString("rid");
            View view = inflater.inflate(R.layout.categoryfragment, container, false);
    return view;
 }
票数 23
EN

Stack Overflow用户

发布于 2016-03-11 00:54:46

我不知道这是不是最好的方法,但是我已经在google上搜索了很长一段时间,发现如何将Bundle从一个片段传递到它的容器activity,但我找到的只是将数据从一个activity发送到另一个片段(这对我来说有点困惑,因为我是一个新手)。

后来,我尝试了一些我自己的东西,完全按照我想要的那样工作。所以我会把它贴在这里,以防像我这样的人在寻找同样的东西。

//从Fragment传入数据

代码语言:javascript
复制
Bundle gameData = new Bundle();
        gameData.putStringArrayList(Constant.KEY_PLAYERS_ARR,players);
        gameData.putString(Constant.KEY_TEAM_NAME,custom_team_name);
        gameData.putInt(Constant.KEY_REQUESTED_OVER,requestedOver);

        Intent intent = getActivity().getIntent();
        intent.putExtras(gameData);

//从bundle的容器活动中获取数据。

代码语言:javascript
复制
Bundle gameData = getIntent().getExtras();
        if (gameData != null)
        {
            int over = gameData.getInt(Constant.KEY_REQUESTED_OVER);
            ArrayList<String> players = gameData.getStringArrayList(Constant.KEY_PLAYERS_ARR);
            String team = gameData.getString(Constant.KEY_TEAM_NAME);

        }
        else if (gameData == null)
        {
            Toast.makeText(this, "Bundle is null", Toast.LENGTH_SHORT).show();
        }
票数 7
EN

Stack Overflow用户

发布于 2016-12-15 15:40:36

接口是最好的解决方案之一:

胶水接口:

代码语言:javascript
复制
public interface DataProviderFromActivity {

    public String getName();
    public String getId);

}  

MyActivity:

代码语言:javascript
复制
public class MyActivity implements DataProviderFromActivity{

    String name = "Makarov";
    String id = "sys533";

    ... ... ... ... ... .... .... 
    ... ... ... ... ... .... .... 

    public String getName(){
        return name;
    };
    public String getId(){
        return id;
    };
}

MyFragment:

代码语言:javascript
复制
public class MyFragment extends Fragment{

    String fragName = "";
    String fragId = "";

    ... ... ... ... ... .... .... 
    ... ... ... ... ... .... .... 

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);

        DataProviderFromActivity myActivity= (DataProviderFromActivity) getActivity();
        fragName = myActivity.getName();
        fragId = myActivity.getId();

        ... ... ... ... ... .... .... 
        ... ... ... ... ... .... .... 

        updateFragmentView();
    }
}
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9343241

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档