如何在片段和它的容器活动之间传递数据?有没有类似于通过意图在活动之间传递数据的东西?
我读了这篇文章,但没有多大帮助:
http://developer.android.com/guide/topics/fundamentals/fragments.html#CommunicatingWithActivity
发布于 2012-08-01 15:57:17
@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;
}
发布于 2016-03-11 00:54:46
我不知道这是不是最好的方法,但是我已经在google上搜索了很长一段时间,发现如何将Bundle从一个片段传递到它的容器activity,但我找到的只是将数据从一个activity发送到另一个片段(这对我来说有点困惑,因为我是一个新手)。
后来,我尝试了一些我自己的东西,完全按照我想要的那样工作。所以我会把它贴在这里,以防像我这样的人在寻找同样的东西。
//从Fragment传入数据
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的容器活动中获取数据。
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();
}
发布于 2016-12-15 15:40:36
接口是最好的解决方案之一:
胶水接口:
public interface DataProviderFromActivity {
public String getName();
public String getId);
}
MyActivity:
public class MyActivity implements DataProviderFromActivity{
String name = "Makarov";
String id = "sys533";
... ... ... ... ... .... ....
... ... ... ... ... .... ....
public String getName(){
return name;
};
public String getId(){
return id;
};
}
MyFragment:
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();
}
}
https://stackoverflow.com/questions/9343241
复制相似问题