0
我有一个使用选项卡的项目活动(MainActivity),每个选项卡启动一个片段(MyFragment)。这些片段没有在项目中实现,而是在引用的库项目中实现。如何在项目中的活动和库中的片段之间传递简单的对象
所以我想从活动的片段通过一个简单的对象:
private MySimpleClass myObject = new MySimpleClass();
public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
static final String KEY = "simpleObject";
final ActionBar actionBar = getActionBar();
Bundle args = new Bundle();
switch(tab.getPosition()) {
case 0:
fragment = new MyFragment();
args.put??????(KEY, myObject);
fragment.setArguments(args);
fragmentTransaction.add(R.id.fragmentContent, fragment, "tab0_tag");
break;
. . .
}
}
如果Fragment
不会是在图书馆,我会绕过Bundle
机制,只需使用一个本地方法:
m = ((MainActivity)getActivity()).getMyObject();
但这并不从库中的代码片段工作,因为它不承认MainActivity
,因此不能投给它。
我也在控制图书馆项目。我尝试了你的建议,但它没有编译,出现以下错误(尽管它读作警告是一个错误)'避免片段中的非默认构造函数:使用默认的构造函数加上Fragment#setArguments(Bundle)而不是' – ilomambo 2013-05-09 18:58:11
虽然在project-> clean之后,错误/警告消失了!伟大的建议! – ilomambo 2013-05-09 19:01:29
嗯,是的,这可能不是一个好主意毕竟:http://stackoverflow.com/questions/9245408/best-practice-for-instantiating-a-new-android-fragment – balpha 2013-05-10 09:20:36