EditText未将用户输入保存为片段



我是安卓系统的新手。我的代码包括创建两个片段。Fragment1包含EditText和按钮。单击按钮后,EditText中的用户输入需要在Fragment2中的TextView中更新。我的问题是,在编写ActivityCreated((方法时,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. 使用Android Jetpack导航组件可以大大简化应用程序内导航。查看此处:https://developer.android.com/guide/navigation

  2. 我还建议您熟悉基本的应用程序体系结构。我建议根据android官方文档查看MVVM。点击此处阅读更多信息:https://developer.android.com/jetpack/guide

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

  • 视图模型:https://developer.android.com/topic/libraries/architecture/viewmodel
  • LiveData:https://developer.android.com/topic/libraries/architecture/livedata

这可能看起来太多了,但如果你想以正确的方式做事,我建议你走这条路。

最新更新