【发布时间】: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