我使用Fragment
在FragmentManager
之间工作,以便在我的项目中保留导航抽屉的视图。
我想要的是从Fragment
A获取字符串,并在TextView
B的Fragment
上显示。因为我没有使用{{1}我不知道该怎么做。有人可以帮帮我吗?
这是我的一段代码,用于解释我如何更改项目中的视图。
Intent
我的Main类有一个带有Fragment Views的xml,称为容器,在那里我显示了Activity的内容。
以下是该XML的示例:
Button button = (Button) view.findViewById(R.id.btn_next);
button.setOnClickListener(new View.OnClicklistener(){
@Override
public void onClick(View v){
Fragment frag_A = new ViewClassB();
FragmentManager fm = getSupportFragmentManager();
fm.beginTransaction()
.replace(R.id.container, frag_A)
.commit();
}
});
这就是我在项目中展示内容的方式。在View类B中,我只需要<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.ViewClassA"
>
<FrameLayout android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="#fff"
xmlns:android="http://schemas.android.com/apk/res/android">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Welcome"
android:id="@+id/text1"
android:layout_gravity="center"
android:layout_marginTop="20dp"
android:textColor="#52D5EC" />
</LinearLayout>
</FrameLayout>
</android.support.v4.widget.DrawerLayout>
来膨胀元素并使用它们。
同样,我需要的是将一个字符串从onCreateView
传递给Fragment A
。我没有使用意图。
有人可以帮助我吗?
答案 0 :(得分:0)
来自Fragment
documentation:
通常,您会希望一个片段与另一个片段进行通信,例如根据用户事件更改内容。所有Fragment-to-Fragment通信都是通过相关的Activity完成的。两个碎片永远不应该直接沟通。
您可以使用Bundle
将数据从一个片段传递到其他片段:
MyFragment myFragment = new MyFragment();
Bundle args = new Bundle();
args.putString(<KEY>, <VALUE>);
myFragment.setArguments(args);
在收件人的最后:
String value = getArguments().getString(<KEY>, <DEFAULT_VALUE>);
答案 1 :(得分:0)
在片段之间共享内容的方式取决于您的偏好。有很多选择,所以选择一个你觉得更舒服的选择:
现在,有一些代码。 将包放在片段上:
fragment.getArguments().getString("someString");
要在片段中获取此捆绑包值:
FragmentManager#findFragmentById
要获取容器中的当前片段,请使用方法FragmentManager#findFragmentByTag
或{{1}}。