[英]Resuming state of fragment activity
我有两个活动(A和B)。 我在活动A中有一个片段F。我的片段F共包含3个EditText(1,2,3)。
我的应用程序从活动B获取一个字符串,并将其放在EditText 3中。我对此没有任何问题。 我的问题是,当我在EditText 1和2中键入内容时,我将从活动B中获取字符串并将其放入EditText 3中,我在EditText 1和2中键入的所有信息都消失了。
我的问题是,即使我从ACTIVITY B到EditText 3,也要保留在EditText 1和2中键入的信息。这是我的代码:
活动A
public class ActivityA extends FragmentActivity {
ViewPager viewPager = null;
PageIndicator pIndicator;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_a);
viewPager = (ViewPager) findViewById(R.id.pager);
FragmentManager fragmentManager = getSupportFragmentManager();
viewPager.setAdapter(new MyAdapter(fragmentManager));
pIndicator = (PageIndicator)findViewById(R.id.indicator);
pIndicator.setViewPager(viewPager);
}
public class MyAdapter extends FragmentStatePagerAdapter {
public MyAdapter (FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int i) {
Fragment fragment = null;
if (i == 0)
{
fragment = new FragmentF();
}
if (i == 1)
{
fragment = new FragmentG();
}
if (i == 2)
{
fragment = new FragmentH();
}
if (i == 3)
{
fragment = new FragmentI();
}
return fragment;
}
@Override
public int getCount() {
return 4;
}
@Override
public CharSequence getPageTitle(int position) {
if (position == 0)
{
return "TAB.F";
}
if (position == 1)
{
return "TAB.G";
}
if (position == 2)
{
return "TAB.H";
}
if (position == 3)
{
return "TAB.I";
}
return null;
}
}
public void btn_to_actb(View view) {
Intent intent = new Intent(this, ActivityB.class);
startActivity(intent);
}
活动B
public final static String EXTRA_MESSAGE = "com.sample.MESSAGE";
// onClick get button from activity B layout
public void get(View view) {
Intent intent = new Intent(this, ActivityA.class);
TextView textView = (TextView)findViewById(R.id.coordinates);
String message = textView.getText().toString();
intent.putExtra(EXTRA_MESSAGE, message);
startActivity(intent);
}
片段F
EditText editText;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
String num = getActivity().getIntent().getStringExtra("com.sample.MESSAGE");
View v = inflater.inflate(R.layout.fragmentf, container, false);
// EditText3 from fragment F layout
editText = (EditText) v.findViewById(R.id.edittext3);
editText.setText(num);
return v;
}
请注意,当您从B启动对活动A的意图时,可以重新创建或恢复活动A,具体取决于A是停止还是仍在内存中。
您可以根据活动A中如何管理片段来重新创建或恢复片段F,因此您将丢失存储在editTexts中的所有信息。
如果您发布活动A的代码,这将很有用。
保留过渡之间的片段数据的最佳方法是将其存储在Activity中,并从Fragment中获取数据。
在你的片段中
@Override
public void onResume(){
EditText1.setText(getActivity().getTextOfEditText1());
EditText2.setText(getActivity().getTextOfEditText2());
super.onResume();
}
**并且在您的活动中**
public class A extends Activity{
//...
private String textOfEditText1;
private String textOfEditText2;
//... Other stuff
public String getTextOfEditText1(){
return textOfEditText1;
}
public String getTextOfEditText2(){
return textOfEditText2;
}
}
修改字符串时,应该具有从片段设置字符串的方法。
希望能帮助到你 :)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.