Android 将字符串从FragmentActivity传递到Fragment
我能够从活动中获取片段活动中的字符串。但是,如何将数据从FragmentActivity传递到Fragments?不过,我可以在零碎的活动中获取数据 (我不想在SharedReferences中存储数据。)Android 将字符串从FragmentActivity传递到Fragment,android,android-fragments,android-fragmentactivity,Android,Android Fragments,Android Fragmentactivity,我能够从活动中获取片段活动中的字符串。但是,如何将数据从FragmentActivity传递到Fragments?不过,我可以在零碎的活动中获取数据 (我不想在SharedReferences中存储数据。) 公共类IndividualDetails活动扩展IndividualBasePager{ 可视寻呼机; 个性化细节基础适配器; 标题页指示器; @凌驾 创建时受保护的void(Bundle savedInstanceState){ super.onCreate(savedInstanceSt
公共类IndividualDetails活动扩展IndividualBasePager{
可视寻呼机;
个性化细节基础适配器;
标题页指示器;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.individual_pager);
mAdapter=新的IndividualDetailsBaseAdapter(getSupportFragmentManager());
mPager=(ViewPager)findViewById(R.id.pager);
mPager.setOffscreenPageLimit(4);
mPager.setAdapter(mAdapter);
mIndicator=(TitlePageIndicator)findViewById(R.id.indicator);
mIndicator.setViewPager(mPager);
mIndicator.setCurrentItem(1);
Intent i=getIntent();
getSupportActionBar().setTitle(i.getStringExtra(“名称”);
}
}
公共类IndividualBasePager扩展SherlockFragmentActivity{
个性化细节基础适配器;
可视寻呼机;
页面指示器指示器;
@凌驾
创建时受保护的void(包arg0){
super.onCreate(arg0);
requestWindowFeature(Window.FEATURE\u不确定\u进度);
setTheme(R.style.Theme\u Sherlock\u Light\u DarkActionBar);
ActionBar ActionBar=getSupportActionBar();
actionbar.setDisplayHomeAsUpEnabled(true);
SetSupportProgressBarInDeterminateVibility(真);
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
if(item.getItemId()==android.R.id.home){
完成();
返回true;
}
返回super.onOptionsItemSelected(项目);
}
}
公共类IndividualDetailsBaseAdapter扩展了FragmentPagerAdapter{
受保护的静态最终字符串[]内容=新字符串[]{“注释”,
“详细信息”、“屏幕”、“教程”};
private int mCount=CONTENT.length;
公共个人详细信息BaseAdapter(FragmentManager fm){
超级(fm);
}
@凌驾
公共片段getItem(int位置){
日志e(“页面”、“位置”+位置);
开关(位置){
案例0:
返回新的CommentsFragment();
案例1:
返回新的DetailsFragment();
案例2:
返回新的CommentsFragment();
案例3:
返回新的CommentsFragment();
}
返回null;
}
@凌驾
public int getCount(){
返回mCount;
}
@凌驾
公共字符序列getPageTitle(int位置){
返回IndividualDetailsBaseAdapter.CONTENT[位置%CONTENT.length];
}
公共无效集合计数(整数计数){
如果(count>0&&count,文档建议您使用片段的父活动。您不应该使用片段到片段的通信,这样您就可以在其他地方重用片段,如果需要的话,并保持其可重用性。话虽如此,我还是建议使用放在捆绑包上的附加组件
你这样说:
savedInstanceState.putString("myString", myStingVariable);
myStingVariable = savedInstanceState.getString("myString");
你可以这样得到它们:
savedInstanceState.putString("myString", myStingVariable);
myStingVariable = savedInstanceState.getString("myString");
您还需要检查该值是否为null
注意,对于不同类型的变量,有不同的getter和setter
希望这能有所帮助。文档建议您使用片段的父活动。您不应该使用片段到片段的通信,这样您就可以在其他地方重用片段,如果需要的话,并保持其可重用性。话虽如此,我还是建议使用放在捆绑包上的附加组件
你这样说:
savedInstanceState.putString("myString", myStingVariable);
myStingVariable = savedInstanceState.getString("myString");
你可以这样得到它们:
savedInstanceState.putString("myString", myStingVariable);
myStingVariable = savedInstanceState.getString("myString");
您还需要检查该值是否为null
注意,对于不同类型的变量,有不同的getter和setter
希望这有帮助。在片段中,您可以通过调用以下方法获得FragmentActivitygetActivity()
。并在FragmentActivity中创建一个类似getValue()的方法
将返回您所需的数据。在片段中,您可以通过调用以下方法获得FragmentActivitygetActivity()
。并在FragmentActivity中创建一个类似getValue()的方法
它将返回您所需的数据。您可以在片段中创建一个setter方法,如下所示。从您的活动中,只需调用该方法即可
public class IndividualDetailsBaseAdapter extends FragmentPagerAdapter {
protected static final String[] CONTENT = new String[] { "Comments",
"Details", "Screens", "Tutorial" };
private int mCount = CONTENT.length;
private String name;
public void setName(String name)
{
this.name=name;
}
public IndividualDetailsBaseAdapter(FragmentManager fm) {
super(fm);
}
... // Rest of your stuff.
}
您可以从活动中调用setName方法,如下所示
mAdapter = new IndividualDetailsBaseAdapter(getSupportFragmentManager());
mAdapter.setName(getIntent().getStringExtra("name"));
您可以在片段中创建一个setter方法,如下所示
public class IndividualDetailsBaseAdapter extends FragmentPagerAdapter {
protected static final String[] CONTENT = new String[] { "Comments",
"Details", "Screens", "Tutorial" };
private int mCount = CONTENT.length;
private String name;
public void setName(String name)
{
this.name=name;
}
public IndividualDetailsBaseAdapter(FragmentManager fm) {
super(fm);
}
... // Rest of your stuff.
}
您可以从活动中调用setName方法,如下所示
mAdapter = new IndividualDetailsBaseAdapter(getSupportFragmentManager());
mAdapter.setName(getIntent().getStringExtra("name"));