我试图更改一个片段的EditText而另一个片段处于活动状态。但没有任何反应。我通过正常的方法调用来做这件事,我怀疑它与当时片段不活跃的视图有关。虽然我没有得到任何例外。对不起,如果我错过任何重要的事情这是我的第一个问题。
public class FirstFragment extends Fragment {
private EditText textView_Text;
@Override
public View onCreateView(LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.first_fragment_layout, container, false);
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
this.mainView = view;
textView_Text = (EditText)view.findViewById(R.id.dateTextView);
}
public void setText(String text){
textView_Text.setText(text);
}
}
// MainActivity
public class MainActivity extends AppCompatActivity {
private FragmentManager fragmentManager;
private FragmentTransaction fragmentTransaction;
private FirstFragment firstFragment;
private SecondFragment secondFragment;
private DateRegisterCallback dateRegisterCallback;
public WorkRegisterActivity(){
fragmentManager = getFragmentManager();
firstFragment = new FirstFragment();
secondFragment = new SecondFragment();
SecondFragmentCallback secondFragmentCallback = new SecondFragmentListener();
SecondFragment.setCallback(SecondFragmentCallback);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
changeFragment(firstFragment);
}
private void changeFragment(Fragment fragment){
fragmentManager = getFragmentManager();
fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(android.R.id.content, fragment);
fragmentTransaction.commit();
}
private class SecondFragmentListener implements SecondFragmentCallback{
@Override
public void callback(String stuff){
changeFragment(firstFragment);
firstFragment.setText(stuff);
}
}
回调和其他一切都有效。我尝试过使用 Log.d ,并且Fragment收到了这些信息。但观点没有改变。 因此,我没有找到为 SecondFragment 编写代码的最佳选择。
我对Android Studio非常陌生,有时可能会发现要遵循的模式非常线性。谢谢您的帮助!
答案 0 :(得分:0)
一种可能的解决方案,也许不是最好的解决方案,是使用SharedPreferences来保存所需的文本值,然后在显示第二个片段时,从SharedPreferences获取文本并加载到文本视图中。