我使用ViewPager
上创建,这是ViewPagerAdapter
:机器人重置/重载片段数据
public class ViewPagerAdapter extends FragmentStatePagerAdapter {
int mNumOfTabs;
public ViewPagerAdapter(FragmentManager fm, int NumOfTabs) {
super(fm);
this.mNumOfTabs = NumOfTabs;
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
Fragment1 tab1 = new Fragment1();
return tab1;
case 1:
Fragment2 tab2 = new Fragment2();
return tab2;
case 2:
Fragment3 tab3 = new Fragment3();
return tab3;
default:
return null;
}
}
@Override
public int getCount() {
return mNumOfTabs;
}
}
这是Activity_1
,其保持所有Fragments
,并自动显示Fragment_1
当打开Activity_1
:
public class Activity1 extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_1);
TabLayout tab_layout = (TabLayout) findViewById(R.id.tab_layout);
tab_layout.addTab(tab_layout.newTab().setText("Frag1"));
tab_layout.addTab(tab_layout.newTab().setText("Frag2"));
tab_layout.addTab(tab_layout.newTab().setText("Frag3"));
final ViewPager view_pager = (ViewPager) findViewById(R.id.viewpager);
final ViewPagerAdapter adapter = new ViewPagerAdapter
(getSupportFragmentManager(), tab_layout.getTabCount());
view_pager.setAdapter(adapter);
view_pager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tab_layout));
tab_layout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
view_pager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
}
每个Fragment
可以去Activity_2
。
Fragment_3
保存可在Activity_2
上编辑的数据。
我的问题:
当从Activity_2
和回Activity_1
使用后退按钮编辑数据,在Fragment_3
数据仍然是老,不随编辑的数据从Activity_2
改变。
但是,当关闭Activity_1
并再次打开时,Fragment_3
中的数据发生更改。
我想我需要重新设置或加载Fragment_3
当我回来Activity_1
从Activity_2
,但我不知道怎么办。
更新,
这是Activity_2:
public class Activity2 extends AppCompatActivity {
TextView tv_id;
String id;
TextView tv_d;
Button bt_add, bt_remove;
String str_find;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_2);
Intent i = getIntent();
id = i.getStringExtra("id");
tv_id = (TextView)findViewById(R.id.tv_DetailId);
tv_id.setText(id);
tv_d = (TextView)findViewById(R.id.tv_Detail);
bt_add = (Button)findViewById(R.id.bt_detail_add);
bt_remove = (Button)findViewById(R.id.bt_detail_remove);
str_find = "example";
try {
final File file = new File(Environment.getExternalStorageDirectory() + "/TestFolder/Test.txt");
StringBuilder text = new StringBuilder();
BufferedReader br = new BufferedReader(new FileReader(file));
String line;
while ((line = br.readLine()) != null) {
text.append(line);
text.append('\n');
}
br.close();
xml_root = text.toString();
FileInputStream in = new FileInputStream(file);
int len = 0;
byte[] data1 = new byte[1024];
while (-1 != (len = in.read(data1))){
if(new String(data1, 0, len).contains(str_find)){
bt_add.setVisibility(View.GONE);
tv_d.setText("yes");
bt_remove.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//something to edit data on Test.txt
}
});
}
else {
bt_remove.setVisibility(View.GONE);
tv_d.setText("no");
bt_add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//something to edit data on Test.txt
}
});
}
}
}
catch (Exception e){
e.printStackTrace();
}
}
}在onResume()
方法
使用接口的全局变量的活动或片段和活动之间进行通信。 –
可能的重复.. http://stackoverflow.com/q/38143179/6334037 – user392117
@Mohammed Atif:如何使用它 – 1234abcd