要在一个碎片中使用一个按钮导航到另一个碎片,可以按照以下步骤进行操作:
build.gradle
文件中,确保你的应用使用了 AndroidX 库。在 android
部分添加以下代码:android {
...
defaultConfig {
...
// 添加以下两行
javaCompileOptions {
annotationProcessorOptions {
arguments = ["room.schemaLocation": "$projectDir/schemas".toString()]
}
}
}
...
}
public class Fragment1 extends Fragment {
private Button button;
public Fragment1() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment1, container, false);
button = view.findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 导航到另一个碎片
Fragment2 fragment2 = new Fragment2();
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.fragment_container, fragment2);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
}
});
return view;
}
}
在上述代码中,我们为按钮添加了一个点击事件处理程序。当按钮被点击时,我们创建了一个新的 Fragment2
实例,并使用 FragmentManager
和 FragmentTransaction
进行碎片导航。我们使用 replace()
方法将当前碎片替换为新的碎片,并使用 addToBackStack(null)
将碎片添加到返回栈中,以便用户可以按返回按钮返回到前一个碎片。
FrameLayout
:
在活动的 Java 文件中,添加碎片到布局容器中:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Fragment1 fragment1 = new Fragment1();
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.fragment_container, fragment1);
fragmentTransaction.commit();
}
}
在上述代码中,我们创建了 Fragment1
的实例,并使用 FragmentManager
和 FragmentTransaction
将其添加到布局容器中。
现在,当按钮被点击时,你将会导航到 Fragment2
。