我遇到了片段问题。如何在另一个片段的片段中设置文本按钮
在我的活动我打电话片段1
- >在片段1,我叫Fragment2
- >在Fragment2,当我点击一个按钮,按钮的片段1的文本将被改变(我不知道如何做到这一点)
这是我的源代码:
activity_main.xml中
<Button
android:id="@+id/btnFragment1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Call Fragment 1" />
<LinearLayout
android:id="@+id/lnFragment1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"></LinearLayout>
fragment1.xml:
<Button
android:id="@+id/btnFragment2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Call Fragment 2" />
<LinearLayout
android:id="@+id/lnFragment2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"></LinearLayout>
fragment2.xml:
<Button
android:id="@+id/btnChange"
android:layout_width = "match_parent"
android:layout_height = "wrap_content"
android:text="Change text for button in fragment 1 to 'DONE'" />
<LinearLayout
android:id="@+id/lnFragment2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"></LinearLayout>
MainActivity.java:
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btnFragment1 = (Button) findViewById(R.id.btnFragment1);
btnFragment1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Fragment fragment = new Fragment1();
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); //lay fragmenttransaction thong qua fragment manager
fragmentTransaction.replace(R.id.lnFragment1,fragment);
fragmentTransaction.commit();
}
});
}
Fragment1.java:
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment1,container,false);
return view;
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
Button btnFragment2 = (Button) getView().findViewById(R.id.btnFragment2);
btnFragment2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Fragment fragment = new Fragment2();
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); //lay fragmenttransaction thong qua fragment manager
fragmentTransaction.replace(R.id.lnFragment2,fragment);
fragmentTransaction.commit();
}
});
}
Fragment2.java:
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment2,container,false);
return view;
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
final Button btnChange = (Button) getView().findViewById(R.id.btnChange);
btnChange.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Fragment fragment1 = new Fragment1();
View vFragment1 = fragment1.getView();
Button btnChange = (Button) vFragment1.findViewById(R.id.btnChange);
btnChange.setText("Done");
}
});
}
谢谢!
两个片段不应该直接相互通信,使用接口来传达片段1到活动,活动到片段2。 – HaroldSer
您需要将一个片段与另一个片段进行通信您使用一个活动。 –