第一次单击按钮不能在EditText对象中获取文本

时间:2019-06-12 21:26:13

标签: java android

问题是,当我第一次单击按钮时,EditText对象中没有文本,而在第二次单击中,它起作用但不能替换框架。

我在一个容器中进行了一个活动,该容器包含一个带有editText和一个按钮的片段,当单击按钮时,我用另一个片段替换了容器中的片段以在编辑文本中显示文本。

我正在关注本教程: https://www.youtube.com/watch?v=OLbsiE42JvE&list=PLshdtb5UWjSrOJfpFOE-u55s3SnY2EO9v&index=14

我在视频“ Android教程(2018)-14-片段到片段的通信”中。

与我的应用程序得出的本教程的区别在于,我的活动是同一项目中的第三项,而我正在从事的活动是我的主要活动。

公共类FinalActivity扩展了AppCompatActivity实现的HeadLineFragment.OnMessageListener {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_final);

    if(findViewById(R.id.final_activity_fragment)!= null) {
            if (savedInstanceState != null) {
                return;
            }
            HeadLineFragment headLineFragment = new HeadLineFragment();
          getSupportFragmentManager().beginTransaction().add(R.id.final_activity_fragment, headLineFragment, null).commit();
    }
}

@Override
public void onMessageSend(String message) {
    ArticleFragment articleFragment = new ArticleFragment();
    Bundle bundle = new Bundle();
    bundle.putString("message",message);
    articleFragment.setArguments(bundle);
    getSupportFragmentManager().beginTransaction().replace(R.id.final_activity_fragment, articleFragment,null).addToBackStack(null).commit();

}

}


公共类HeadLineFragment扩展了片段{

OnMessageListener onMessageListener;
private Button button;
private EditText editText;
public interface OnMessageListener{
    public void onMessageSend(String message);
}

public HeadLineFragment(){

}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View view= inflater.inflate(R.layout.headline_fragment, container, false);
    button = view.findViewById(R.id.bfrag);
    editText = view.findViewById(R.id.editText21);

    button.setOnClickListener(new View.OnClickListener(){

        @Override
        public void onClick(View view) {
            String message = editText.getText().toString();
           String s =  editText.getText().toString();
            onMessageListener.onMessageSend(message);
        }
    });
    return view;
}
@Override
public void onAttach(Context context) {
    super.onAttach(context);

    Activity activity = (Activity) context;
    try {
        onMessageListener = (OnMessageListener) activity;
    }catch (ClassCastException e){
        throw new ClassCastException(activity.toString() + " must implement OnMessageListener....");

    }
}
@Override
public void onResume() {
    super.onResume();
    editText.setText("");
}

}


公共类ArticleFragment扩展了片段{

private TextView textView;

public ArticleFragment(){}

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View view = inflater.inflate(
            R.layout.article_fragment,container, false);
    textView = view.findViewById(R.id.txt_message_display);

    Bundle bundle = getArguments();
    String message = bundle.getString("message");

    textView.setText(message);
    return view;
}

}

我希望该功能具有与教程视频相同的行为

1 个答案:

答案 0 :(得分:1)

我最终解决了自己的问题,活动的布局有一个片段,而不是框架布局。通过更改问题已解决。