我从一个月开始就陷入了分类Android应用程序的困境。 情况如下。
我有一个活动,其中有一个片段在olx之类的片段(Ads_display)上显示广告,在工具栏中,我有一个城市搜索片段,用户可以在第一次创建片段时更改城市,这在第一次工作时效果很好,激活片段后,当我每次举杯时向我展示在创建片段时通过的旧城市名称时,该textView的更新值(我正在从城市搜索片段中获取textView的值)不会转移到Ads_display片段< / strong>。对不起,因为我无法在此处粘贴代码段,因为现在我每天都尝试做一些事情,结果是我什至不了解自己所做的事情。
由于您已经提出了我的最后期限,请在此感谢您的宝贵答复,帮助我解决这种情况。
答案 0 :(得分:1)
我会否决这个问题,但您似乎处境艰难。
首先检查如何在片段之间传递数据:
这就是我要做的:
//Set the edit text on a changed listener
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
// Pass values from your fragment to your other fragment
Bundle b = new Bundle();
b.putString("city", s);
FragmentB fragB = new FragmentB();
fragB.setArguments(b);
getFragmentManager().beginTransaction().replace(R.id.your_container, fragB);
}
});
Then you have to receive your values in the fragment
Bundle b = this.getArguments();
if(b != null){
String city = b.getString("city");
}
如果您的搜索值来自活动,则只需将活动中的值传递给片段即可:
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
Bundle bundle = new Bundle();
bundle.putString(s, "city");
tab1.setArguments(bundle);
}
});
然后在片段中获取参数
if (getArguments() != null) {
String city = getArguments().getString("city);
}
或者您可以使用界面,我看不到您的代码,所以我无法说出最适合您的代码。
答案 1 :(得分:0)
您必须在活动和片段之间创建接口作为侦听器,但是我建议使用EventBus,它将使您轻松实现此方法
https://github.com/greenrobot/EventBus,http://greenrobot.org/eventbus/