来自片段容器的 NotifyDataSetChanged
NotifyDataSetChanged from fragment container
我有一个带有 Activity
的应用程序,其中包含一个 ListFragment
、一个 EditText
和一个 Button
。当用户按下 Button
时,我想将 EditText
中的文本添加到 ListFragment
中。我知道要这样做,我必须调用 Fragment
的适配器的 notifyDataSetChanged()
方法,但我现在不知道我将如何去做。我也不知道如何调用适配器的 add 方法,但我觉得如果我想出了一个方法,我就能想出另一个方法。
任何帮助都会很棒。
编辑:进一步说明:
因此托管 Activity
(ThreadContainer.java) 扩展其布局,其中包含 ListFragment
,如下所示:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_thread_container);
...
这里是activity_thread_container.xml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.claymon.android.cryptosms.ThreadContainer">
<fragment
android:id="@+id/thread_container"
android:name="com.claymon.android.cryptosms.MessageFragment"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_above="@+id/newMessageText"/>
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/newMessageText"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:inputType="text|textMultiLine"
android:focusable="true"
android:maxLines="4"
android:maxLength="2000"
android:scrollHorizontally="false"
android:stackFromBottom="true"
android:transcriptMode="alwaysScroll"
android:layout_toLeftOf="@+id/sendButton"
android:layout_toStartOf="@+id/sendButton"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/send"
android:id="@+id/sendButton"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"/>
然后,扩展 ListFragment
的 MessageFragment
仅使用相当简单的自定义 ArrayAdapter
显示一些预定数据。这里的代码或多或少是无关紧要的。我想要做的是从 ThreadContainer.java 中调用我的自定义 ArrayAdapter
方法。基本上,我需要弄清楚如何访问我在扩充布局时创建的片段。
抱歉最初的问题很糟糕。
What I want to do is call my custom ArrayAdapter's methods from within ThreadContainer.java. Basically, I need to figure out how to access the fragment that I created when I inflated my layout
当您添加 Fragment
时,向其提供 Tag
并通过 Tag
FragmentMananger.findFragmentByTag("")
returns a Frament
检索它然后你将 Fragment
转换为你喜欢的 class 并调用你的方法
我有一个带有 Activity
的应用程序,其中包含一个 ListFragment
、一个 EditText
和一个 Button
。当用户按下 Button
时,我想将 EditText
中的文本添加到 ListFragment
中。我知道要这样做,我必须调用 Fragment
的适配器的 notifyDataSetChanged()
方法,但我现在不知道我将如何去做。我也不知道如何调用适配器的 add 方法,但我觉得如果我想出了一个方法,我就能想出另一个方法。
任何帮助都会很棒。
编辑:进一步说明:
因此托管 Activity
(ThreadContainer.java) 扩展其布局,其中包含 ListFragment
,如下所示:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_thread_container);
...
这里是activity_thread_container.xml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.claymon.android.cryptosms.ThreadContainer">
<fragment
android:id="@+id/thread_container"
android:name="com.claymon.android.cryptosms.MessageFragment"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_above="@+id/newMessageText"/>
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/newMessageText"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:inputType="text|textMultiLine"
android:focusable="true"
android:maxLines="4"
android:maxLength="2000"
android:scrollHorizontally="false"
android:stackFromBottom="true"
android:transcriptMode="alwaysScroll"
android:layout_toLeftOf="@+id/sendButton"
android:layout_toStartOf="@+id/sendButton"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/send"
android:id="@+id/sendButton"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"/>
然后,扩展 ListFragment
的 MessageFragment
仅使用相当简单的自定义 ArrayAdapter
显示一些预定数据。这里的代码或多或少是无关紧要的。我想要做的是从 ThreadContainer.java 中调用我的自定义 ArrayAdapter
方法。基本上,我需要弄清楚如何访问我在扩充布局时创建的片段。
抱歉最初的问题很糟糕。
What I want to do is call my custom ArrayAdapter's methods from within ThreadContainer.java. Basically, I need to figure out how to access the fragment that I created when I inflated my layout
当您添加 Fragment
时,向其提供 Tag
并通过 Tag
FragmentMananger.findFragmentByTag("")
returns a Frament
检索它然后你将 Fragment
转换为你喜欢的 class 并调用你的方法