I a ViewPager
verwenden 3 erstellen Fragments
auf Activity_1
, ist dies die ViewPagerAdapter
:android Reset/Neuladen Fragmentdaten
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;
}
}
Diese Activity_1
, der alle Fragments
hält, und zeigt automatisch Fragment_1
wenn Activity_1
geöffnet wird:
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) {
}
});
}
Alle Fragment
können zu Activity_2
gehen.
Fragment_3
enthält Daten, die unter Activity_2
bearbeitet werden können.
Mein Problem:
Wenn Bearbeiten von Daten aus Activity_2
und zurück zu Activity_1
der Zurück-Taste verwenden, Daten in Fragment_3
noch alt sind, nicht mit den bearbeiteten Daten von Activity_2
geändert.
Aber wenn schließen Activity_1
und öffnen Sie es erneut, Daten in Fragment_3
wird geändert.
Ich denke, ich brauche Fragment_3
zurücksetzen oder neu zu laden, wenn ich zurück zu Activity_1
von Activity_2
komme, aber ich weiß nicht wie.
Update,
dies 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();
}
}
}
Verwenden Schnittstellen werden zwischen Aktivität oder Fragmenten und Aktivität zu kommunizieren. –
Mögliches Duplikat von .. http://stackoverflow.com/q/38143179/6334037 – user392117
@Mohammed Atif: wie man es benutzt – 1234abcd