我有一个简单的Activity,其中包含TabLayout、ViewPager和2个片段。
public class ManagementCompanyOverviewActivity extends BaseActivity implements ManagementCompanyOverviewView {
private ManagementCompanyVPAdapter mVPAdapter;
private TabLayout mTLContent;
private ViewPager mVPContent;
@InjectPresenter
ManagementCompanyPresenter mPresenter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_management_company);
mVPAdapter = new ManagementCompanyVPAdapter(getSupportFragmentManager());
mTLContent = (TabLayout) findViewById(R.id.tl_company_content);
mVPContent = (ViewPager) findViewById(R.id.vp_company_content);
mVPContent.setAdapter(mVPAdapter);
mTLContent.setupWithViewPager(mVPContent);
}
@Override
public void onAboutCompanyInfoReceivedFromServer(AboutCompanyViewModel model) {
}
Activity有一个Presenter(我使用的是Moxy),Presenter发送请求,获取应答,创建JavaObject(视图模型),并使用getViewState()
将此模型传递给Activity。
Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_about_company, container, false);
mTVName = (TextView) view.findViewById(R.id.tv_company_name);
mTVDirector = (TextView) view.findViewById(R.id.tv_company_director);
mTVWebsite = (TextView) view.findViewById(R.id.tv_company_website);
mTVEmail = (TextView) view.findViewById(R.id.tv_company_email);
mTVPhone = (TextView) view.findViewById(R.id.tv_company_phone);
mTVSchedule = (TextView) view.findViewById(R.id.tv_company_schedule);
mTVAddress = (TextView) view.findViewById(R.id.tv_company_address);
return view;
}
这个片段有一些文本视图来显示来自我的模型的信息。如何传递这个模型?如果我知道它是正确的,我应该创建一个侦听器,但如何?我不完全了解如何与他们一起工作。
8条答案
按热度按时间bxgwgixi1#
好吧,是我干的。
第1步:我在Activity中创建了公共接口,并为其创建了setter:
第2步:我在我的Fragment中实现了这个接口并设置了监听器:
第3步:我重写了接口的方法:
就是这样。
tp5buhyn2#
在活动中尝试
片段中
0tdrvxhp3#
您可以在Fragment中使用newInstance方法:
在您的活动中:
使用
MyFragment.newInstance("yourParam");
代替new MyFragment()
ebdffaop4#
您还可以在适配器的构造函数中获取要在片段中显示的数据,并在返回新片段之前设置参数
w80xi6nr5#
从活动或视图分页器
来自片段
svujldwt6#
碎片
接口
活动:
updateFragmetData
方法将在当前选定的视图页导航项片段中调用。您还可以向updateFragmetData
添加标记参数,以便确保调用了正确的片段示例。如果需要,您可以在updateFragmetData
实现中调用isVisible
,以确保片段可见。i7uq4tfw7#
我发现了一种新的方法来传递数据到片段,或片段适配器直接
首先你创建一个getter方法来获取数据假设你想获取username你在activity中创建一个方法
然后从fragment和fragment适配器调用这个方法
碎片
适配器
这种方法还可以帮助您减少对数据库的请求数量
kx7yvsdv8#
您可以通过两个简单的步骤将数据从Activity传递到片段或任何所需的片段(使用FragmentStatePagerAdapter时):
步骤1:将数据从Activity传递到ViewPagerAdapter类:要做到这一点,你需要添加另一个属性到构造函数中(attribut==your data)
步骤2:将数据从viewPagerAdapter类传递到fragment:现在,在createFragment()函数中,您可以使用bundle传递该属性
最后:接收片段中的数据