📅  最后修改于: 2023-12-03 15:29:22.493000             🧑  作者: Mango
Android 片段 (Fragment) 是一种组件,可用于在应用程序的用户界面 (UI) 中插入可重用的模块化部分。例如,如果您正在开发一个类似于 Twitter 的应用程序,则可能使用 Android 片段来表示用户的时间轴、设置和个人资料。在本文中,我们将介绍有关 Android 片段的一些基础知识和一些最佳实践。
要创建 Android 片段,只需在您的 Android 项目中创建一个新的 Java 类。然后,您可以使用以下方法之一将其转换为片段:
android.app.Fragment
类。这是 Android 3.0 及更早版本的标准方法。android.support.v4.app.Fragment
类。这是 Android 支持库中运行的更早版本的标准方法。android.app.Fragment
并在支持库中使用 android.support.v4.app.Fragment
。这是最常见的方法,因为它可以确保您的应用程序向后兼容到 Android 2.1。以下是一个将 Java 类转换为片段的示例:
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
public class myFragment extends Fragment {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.my_fragment_layout, container, false);
}
}
要将一个 Android 片段添加到一个活动,您可以使用以下方法:
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.add(R.id.fragment_container, new myFragment()).commit();
可以将片段添加到一个 ViewGroup 中,如以下布局文件:
<LinearLayout
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" />
要与 Android 片段进行通信,您可以使用以下方法之一:
以下是一个使用第一种方法的示例:
public interface OnFragmentInteractionListener {
void onFragmentInteraction(Uri uri);
}
public class myFragment extends Fragment {
private OnFragmentInteractionListener mListener;
// ...
@Override
public void onAttach(Context context) {
super.onAttach(context);
if (context instanceof OnFragmentInteractionListener) {
mListener = (OnFragmentInteractionListener) context;
} else {
throw new RuntimeException(context.toString() + " must implement OnFragmentInteractionListener");
}
}
// ...
public void sendMessage() {
if (mListener != null) {
mListener.onFragmentInteraction(Uri.parse("message"));
}
}
}
public class MainActivity extends AppCompatActivity implements OnFragmentInteractionListener {
@Override
public void onFragmentInteraction(Uri uri) {
Toast.makeText(this, "Message received from fragment", Toast.LENGTH_SHORT).show();
}
}
当用户旋转设备时,Android 会销毁并重新创建您的活动和所有片段。为了确保您的片段在设备配置更改时不会丢失它们的状态,您可以覆盖 onSaveInstanceState
和 onCreate
方法。
以下是一个使用 onSaveInstanceState
和 onCreate
方法的示例:
public class myFragment extends Fragment {
private int mCount = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState != null) {
mCount = savedInstanceState.getInt("count", 0);
}
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("count", mCount);
}
public void increment() {
mCount++;
}
public int getCount() {
return mCount;
}
}
要重用 Android 片段,您可以将其添加到多个不同的活动中。您还可以将该片段转换为库模块,并将其包含在多个项目中。但是,请注意,一些片段可能仅适用于特定类型的活动,并且可能无法与其他活动一起使用。
Android 片段是一个强大的组件,可用于构建模块化的应用程序。它们可以使您的代码更干净、更易于维护,并提供有关应用程序状态的更多信息。我们希望本文能帮助您开始使用 Android 片段,并为您提供了一些最佳实践。