EditText不会将用户输入保存在片段中

时间:2020-10-08 14:58:14

标签: android android-fragments android-edittext

我是android新手。我的代码包括创建两个fragment.Fragment1包含EditText和button。单击按钮后,需要在Fragment2的TextView中更新EditText中的用户输入。我的问题是,当我编写onActivityCreated()方法时,EditText不会存储用户输入并且Fragment2不会膨胀。感谢提前提供解决方案。 MainActivity.java


    public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        try {
            setContentView(R.layout.activity_main);
            FragmentOne fragmentOne = new FragmentOne();
            FragmentTwo fragmentTwo = new FragmentTwo();
            FragmentManager fm = getSupportFragmentManager();
            FragmentTransaction ft = fm.beginTransaction();
            ft.add(R.id.fragment1,fragmentOne);
            ft.add(R.id.fragment2,fragmentTwo);
            ft.commit();
        }catch (Exception e){
            Log.e("MainActivity",e.toString()) ;
        }
    }
}

FragmentOne.java


    public class FragmentOne extends Fragment {
    View v = null ;
    EditText name;
    Button b;
    String value = "";
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
            v = inflater.inflate(R.layout.fragment_one, container, false);
            name = (EditText) v.findViewById(R.id.et_name);
            b = (Button) v.findViewById(R.id.button);
            return v;
    }
    public void onActivityCreated(Bundle savedInstance) {
        super.onActivityCreated(savedInstance);
        b.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                value = name.getText().toString();
                clickMe(value);
            }
        });
    }
    public void clickMe(String value){
        Bundle b = new Bundle();
        b.putString("Name",value);
        this.setArguments(b);
    }
}

FragmentTwo.java


    public class FragmentTwo extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        final View v = inflater.inflate(R.layout.fragment_two, container, false);
        return v;
    }
    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        String name = "";
        Bundle bundle = getArguments();
        if (bundle != null) {
            name = bundle.getString("Name");
            }
        TextView display = (TextView)getView().findViewById(R.id.display);
        display.setText(name);
        }
    }

1 个答案:

答案 0 :(得分:0)

考虑到您正在构建自己的应用程序,并了解如何处理所有这些,让我给您一些建议:

  1. 使用Android Jetpack导航组件可以大大简化应用内导航。在这里检查:https://developer.android.com/guide/navigation

  2. 我还建议您熟悉基本的应用程序体系结构。我建议按照官方android文档查看MVVM。在这里阅读更多: https://developer.android.com/jetpack/guide

  3. 如果您能做到这一点,还应该学习:

这似乎太多了,但是如果您想以正确的方式做事,我建议您沿着这条路线走。