更改片段中未激活的EditText

时间:2016-04-22 16:36:47

标签: java android android-studio

我试图更改一个片段的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非常陌生,有时可能会发现要遵循的模式非常线性。谢谢您的帮助!

1 个答案:

答案 0 :(得分:0)

一种可能的解决方案,也许不是最好的解决方案,是使用SharedPreferences来保存所需的文本值,然后在显示第二个片段时,从SharedPreferences获取文本并加载到文本视图中。