已经有一段时间了,但是我正在制作一个使用fragments
的火种/聊天应用程序。 chat fragment
内部是一个recyclerview
,它从Firebase Database
获取数据。当您单击fragment
内部的聊天时,它将带您进入Chat Activity
。一切都按应有的方式进行,但我遇到了这一问题。我一直很难收到最近发送的消息。用户发送消息时,将在push id
中创建一个database
。起初,我试图获取最后一个推送ID并获取消息,但是我遇到了问题,我的recyclerview
只会重新填充并将项目添加到现有的recyclerview
中。
所以现在,我创建了一个名为child
的{{1}},每次发送新消息时都会更改它。我的lastMessage
从此recyclerview
获得了value
,没有问题,只有打开应用程序时它才会获得该值。我希望child
中的recyclerview
打开时,fragment
或fragment
或backpress
内的方法只是刷新并返回到{{ 1}}。我尝试了这些的不同变体,但它们最终都崩溃了:
尝试过:
Chat Activity
还有这个
Chat Fragment
}
还有更多类似的东西,但似乎无法使其正常工作。谁能帮我这个?我尝试在我的FragmentManager fm = getSupportFragmentManager();
YourFragmentClass fragment =
(YourFragmentClass)fm.findFragmentById(R.id.your_fragment_id);
fragment.method();
中调用该方法,但最终也崩溃了。我只是希望@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser) {
// Refresh your fragment here
}
或Chat Activity
刷新,就像关闭应用程序并将其重新加载一样,但是当我method
进入fragment
时。我的代码如下:
主要活动
backpress
片段聊天
Chat Activity
聊天活动
public class MainFragmentActivity extends AppCompatActivity {
private SectionsPageAdapter mSectionsPageAdapter;
private ViewPager mViewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_fragment);
mSectionsPageAdapter = new SectionsPageAdapter(getSupportFragmentManager());
//Setup the Viewpager with sections adapter
mViewPager = (ViewPager) findViewById(R.id.container);
mViewPager.setOffscreenPageLimit(5);
setupViewPager(mViewPager);
TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
tabLayout.setupWithViewPager(mViewPager);
}
private void setupViewPager(ViewPager viewPager){
SectionsPageAdapter adapter = new SectionsPageAdapter(getSupportFragmentManager());
adapter.addFragment(new Fragment_Account(), "Account");
adapter.addFragment(new Fragment_Swipes(), "Matches");
adapter.addFragment(new Fragment_MatchChats(), "Chat");
viewPager.setAdapter(adapter);
}
答案 0 :(得分:0)
尝试覆盖片段中的onResume()
,然后检查FirebaseDB