Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 从片段更新edittext_Android_Android Fragments_Android Edittext - Fatal编程技术网

Android 从片段更新edittext

Android 从片段更新edittext,android,android-fragments,android-edittext,Android,Android Fragments,Android Edittext,我目前的情况如下: 1) “主视图”,其中包含我尝试更新的编辑文本。(我们称之为mainView) 2) 每当我点击“主视图”中包含的按钮时打开的片段 片段接收mainView作为参数 3) 一个OnClickListener,设置为片段所包含的按钮。此侦听器接收片段作为参数 基本上,我需要做的是,每次单击触发侦听器的按钮时,我都需要更新editText,但它似乎不起作用。我相信这与“通知”视图有关,但无论我做什么尝试,都无法使其工作。更新文本后,我关闭片段并 基本上,代码如下所示: publi

我目前的情况如下:

1) “主视图”,其中包含我尝试更新的编辑文本。(我们称之为
mainView

2) 每当我点击“主视图”中包含的按钮时打开的片段 片段接收mainView作为参数

3) 一个
OnClickListener
,设置为片段所包含的按钮。此侦听器接收片段作为参数

基本上,我需要做的是,每次单击触发侦听器的按钮时,我都需要更新editText,但它似乎不起作用。我相信这与“通知”视图有关,但无论我做什么尝试,都无法使其工作。更新文本后,我关闭片段并

基本上,代码如下所示:

public void onClick(View v){
  String newMessageContent = "hello world";
  fragment1.mainView.editText1.setText(newMessageContent);
  FragmentManager manager = this.fragment1.getActivity().getFragmentManager();
  manager.beginTransaction().replace(R.id.container,this.fragment1.mainView.getPlaceHolderFragment()).commit();
}
FragmentManager manager = this.selectTemplateFragment.getActivity().getFragmentManager();
manager.beginTransaction().remove(this.selectTemplateFragment).commit();
请注意,为了让大家更好地理解,我将问题简化了一点,并更改了片段/视图的名称。文本“hello world”实际上是动态的,不依赖于
OnClickListener
接收的其他参数

单击后,片段确实被替换,因此我知道
onClickListener
工作正常,但我认为通知数据更改的方式有问题

我已经研究了很多问题,但是没有一个能帮助我实现我所需要的


非常感谢您的帮助。

我意识到问题在于每次我通过fragmentManager替换Farment时,都会再次调用方法setActivityView,从而替换EditText内容

为了避免这种情况,我手动删除了片段(而不是替换它),执行以下操作:

public void onClick(View v){
  String newMessageContent = "hello world";
  fragment1.mainView.editText1.setText(newMessageContent);
  FragmentManager manager = this.fragment1.getActivity().getFragmentManager();
  manager.beginTransaction().replace(R.id.container,this.fragment1.mainView.getPlaceHolderFragment()).commit();
}
FragmentManager manager = this.selectTemplateFragment.getActivity().getFragmentManager();
manager.beginTransaction().remove(this.selectTemplateFragment).commit();

我意识到问题在于,每次我通过fragmentManager替换Farment时,都会再次调用方法setActivityView,从而替换EditText内容

为了避免这种情况,我手动删除了片段(而不是替换它),执行以下操作:

public void onClick(View v){
  String newMessageContent = "hello world";
  fragment1.mainView.editText1.setText(newMessageContent);
  FragmentManager manager = this.fragment1.getActivity().getFragmentManager();
  manager.beginTransaction().replace(R.id.container,this.fragment1.mainView.getPlaceHolderFragment()).commit();
}
FragmentManager manager = this.selectTemplateFragment.getActivity().getFragmentManager();
manager.beginTransaction().remove(this.selectTemplateFragment).commit();

我意识到问题在于,每次我通过fragmentManager替换Farment时,都会再次调用方法setActivityView,从而替换EditText内容

为了避免这种情况,我手动删除了片段(而不是替换它),执行以下操作:

public void onClick(View v){
  String newMessageContent = "hello world";
  fragment1.mainView.editText1.setText(newMessageContent);
  FragmentManager manager = this.fragment1.getActivity().getFragmentManager();
  manager.beginTransaction().replace(R.id.container,this.fragment1.mainView.getPlaceHolderFragment()).commit();
}
FragmentManager manager = this.selectTemplateFragment.getActivity().getFragmentManager();
manager.beginTransaction().remove(this.selectTemplateFragment).commit();

我意识到问题在于,每次我通过fragmentManager替换Farment时,都会再次调用方法setActivityView,从而替换EditText内容

为了避免这种情况,我手动删除了片段(而不是替换它),执行以下操作:

public void onClick(View v){
  String newMessageContent = "hello world";
  fragment1.mainView.editText1.setText(newMessageContent);
  FragmentManager manager = this.fragment1.getActivity().getFragmentManager();
  manager.beginTransaction().replace(R.id.container,this.fragment1.mainView.getPlaceHolderFragment()).commit();
}
FragmentManager manager = this.selectTemplateFragment.getActivity().getFragmentManager();
manager.beginTransaction().remove(this.selectTemplateFragment).commit();

我建议用方法实现一个接口,比如说,IUpdateFromFragment,比如,
onUpdate(String message)
,然后让activity实现该接口,并在片段内部调用类似于
((IUpdateFromFragment)this.getActivity()).onUpdate(newMessageContent)的东西

我建议用方法实现一个接口,比如说IUpdateFromFragment,比如说,
onUpdate(字符串消息)
,然后让activity实现该接口,在片段内部调用类似于
((IUpdateFromFragment)this.getActivity()).onUpdate(newMessageContent)的东西

我建议用方法实现一个接口,比如说IUpdateFromFragment,比如说,
onUpdate(字符串消息)
,然后让activity实现该接口,在片段内部调用类似于
((IUpdateFromFragment)this.getActivity()).onUpdate(newMessageContent)的东西

我建议用方法实现一个接口,比如说IUpdateFromFragment,比如说,
onUpdate(字符串消息)
,然后让activity实现该接口,在片段内部调用类似于
((IUpdateFromFragment)this.getActivity()).onUpdate(newMessageContent)的东西

通过事务更新片段,然后在ViewCreated上的fragment1类中,可以执行mainView.editText1.setText(“任意”)


您现在这样做,我很惊讶没有抛出异常,因为视图还没有膨胀。

通过事务更新片段,然后在ViewCreated上的fragment1类中,您可以执行mainView.editText1.setText(“任意”)


您现在这样做,我很惊讶没有抛出异常,因为视图还没有膨胀。

通过事务更新片段,然后在ViewCreated上的fragment1类中,您可以执行mainView.editText1.setText(“任意”)


您现在这样做,我很惊讶没有抛出异常,因为视图还没有膨胀。

通过事务更新片段,然后在ViewCreated上的fragment1类中,您可以执行mainView.editText1.setText(“任意”)



您现在这样做,我很惊讶没有抛出异常,因为视图尚未膨胀。

如何获取fragment1引用?在构造函数中:public fragment1(MainView MainView)不确定您在说什么。但是只需使用fragment1=getFragmentById()或fragment1=getFragmentByTag(),然后在该fragment1上使用getViewById()来获取您的edittext id,希望这能解决您的问题。所以基本上问题是引用?让我试一试,我仍然不明白为什么它不起作用:(harikris引导我走向正确的方向:)如何获得fragment1引用?在构造函数中:public fragment1(MainView MainView)不确定你在说什么。但是只需使用fragment1=getFragmentById()或fragment1=getFragmentByTag(),然后在该fragment1上使用getViewById()来获取您的edittext id,希望这能解决您的问题。所以基本上问题是引用?让我试一试,我仍然不明白为什么它不起作用:(harikris引导我走向正确的方向:)如何获得fragment1引用?在构造函数中:public fragment1(MainView MainView)不确定