Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 碎片活动的恢复状态_Java_Android_Android Fragments - Fatal编程技术网

Java 碎片活动的恢复状态

Java 碎片活动的恢复状态,java,android,android-fragments,Java,Android,Android Fragments,我有两项活动(A和B)。我在活动a中有一个片段F。我的片段F包含3个编辑文本(1,2,3) 我的应用程序从活动B中获取一个字符串,并将其放置在EditText 3中。我对此没有异议。我的问题是,当我在EditText 1和2中键入内容时,我将从活动B中获取字符串并将其放入EditText 3中,我在EditText 1和2中键入的所有信息都将消失 我的问题是,即使我从活动B获取字符串到EditText 3,我在EditText 1和2中键入的信息如何保留。这是我的密码: 活动A public c

我有两项活动(A和B)。我在活动a中有一个片段F。我的片段F包含3个编辑文本(1,2,3)

我的应用程序从活动B中获取一个字符串,并将其放置在EditText 3中。我对此没有异议。我的问题是,当我在EditText 1和2中键入内容时,我将从活动B中获取字符串并将其放入EditText 3中,我在EditText 1和2中键入的所有信息都将消失

我的问题是,即使我从活动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可以重新创建o恢复,具体取决于A是否已停止或是否仍在内存中

您的片段F也可以重新创建或恢复,这取决于您如何管理活动A中的片段,因此您将丢失EditText中存储的所有信息

如果您发布活动A的代码,这将非常有用

在转换之间保存片段数据的最佳方法是将其存储在活动中并从片段中获取

在你的片段中

  @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;
       }

 }
您应该有方法在修改片段时从片段中设置字符串


希望有帮助:)

我在EditText1.setText(getActivity().GetExtfeditText1()中遇到错误;它表示“类型FragmentActivity的getExtrexFeditText1()方法未定义”。与EditText2相同。我将其更改为EditText1.setText(((ActivityA)getActivity()).GetExtfeditText1());但是当我试图运行我的应用程序时,它崩溃了。如果没有跟踪,我会说你有一个NullPointerException。您必须处理活动返回的字符串。我发布的代码非常简单,更复杂的代码可能是这样的@重写公共void onResume(){String text1=getActivity().getTextDefeditText1();if(text1!=null){EditText1.setText(text1);}//与edit2 super.onResume()相同;}