【问题标题】:EditText not saving user input in fragmentsEditText 不将用户输入保存在片段中
【发布时间】:2020-10-08 14:58:14
【问题描述】:

我是安卓新手。我的代码包括创建两个片段。Fragment1 包含 EditText 和按钮。单击按钮后,EditText 中的用户输入需要在 Fragment2 的 TextView 中更新。我的问题是 EditText 没有存储用户输入,并且在我编写 onActivityCreated() 方法时 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);
        }
    }

【问题讨论】:

  • 你能告诉你你到底想在这里做什么吗?我的意思是 - 您是在构建自己的应用程序还是在尝试修复现有的应用程序?
  • 构建我自己的应用程序。只是练习片段概念。

标签: android android-fragments android-edittext


【解决方案1】:

考虑到您正在构建自己的应用程序并了解您是如何实现这一切的,让我给您一些建议:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-10
    相关资源
    最近更新 更多