当一个Activity中有一些不同的片段时,片段之间的通信最好和更安全的方法是什么?
我使用callback
但是我通过构造函数传递它,现在我遇到了一些崩溃
我认为null callbacks
是导致崩溃的原因,当应用程序在后台运行,然后用户返回应用程序时,回调为空。
有一个很大的问题,当我在Activity中有很多片段时,在Activity中实现回调是一种困难和混乱的方式。
我已经测试了EventBus
,但我的目的只是一个片段,它有点苛刻,也可能是片段需要从父片段获取数据。
你知道更好的方法吗?
my structure
我有很多片段A,B,C,....更新片段A时,我也想更新片段B,对于其他片段也是如此,更新片段C,D也应该更新等等。
如果我想使用接口,我应该写很多接口。还有其他建议吗?
答案 0 :(得分:1)
您可以使用Bundle
课程。
Bundle args = new Bundle();
args.putString("my_value", "hello world");
Fragment1 fragment1 = new Fragment1();
fragment1.setArguments(args);
在另一个接收值的片段中:
String requiredValue = getArguments().getString("my_value");
答案 1 :(得分:0)
if (getActivity() instanceof YourActivityName)
{
((YourFragment2Name)getActivity()).variable);
}
//确保YourFragment2Name中的变量应该是公共的。
答案 2 :(得分:0)
一切都取决于您的预期情况。
public class MyFragment extends Fragment {
interface FragmentCallback {
void onClickButton(MyFragment fragment);
}
private FragmentCallback mCallback;
@Override
public void onClick(View v) {
switch (v.getId()) {
mCallback.onClickButton(this);
}
}
}
对于接口通信请检查
public class MainActivity extends AppCompatActivity implements MyFragment.FragmentCallback {
//onCreate
@Override
public void onClickButton(MyFragment fragment) {
// Do your Task
}
}
活动
CACHES = {
# Set default cache to FallbackCache
'default': {
'BACKEND': 'cache_fallback.FallbackCache',
},
# Your production main cache (Redis, for example)
'main_cache': {
'BACKEND': 'redis_lock.django_cache.RedisCache',
'LOCATION': redis_url,
'OPTIONS': {
'CLIENT_CLASS': 'django_redis.client.DefaultClient',
},
'TIMEOUT': 500,
},
# Use dummy cache to ignore main cache errors and get data from DB
'fallback_cache': {
'BACKEND': 'django.core.cache.backends.dummy.DummyCache',
}
}